使用命令行按日期过滤大数据文件



我有一个csv文件,其中包含一堆数据,其中一列是日期。我正在尝试提取所有在特定年份有日期的行,并将其保存到一个新文件中。

文件的格式是这样的第二列的日期和时间:

000000000,10/04/2021 02:10:15 AM,.....

So far I try:

grep -E ^2020 data.csv >> temp.csv

但是它只生成了一个空的临时列表。有什么好主意吗?

awk一个潜在的解决方案是:

awk -F"," '$2 ~ //2020 /' data.csv > temp.csv

另一个可能的选择是grep:

grep "/2020 " data.csv > temp.csv

然而,grep溶液可以检测到"/2020 "在文件的其他位置,而不是在第2列。

虽然awk溶液在这里是最好的,例如

awk -F, 'index($2, "/2021 ")' file

grep也可以在这里使用:

grep  '^[^,]*,[^,]*/2021 ' file

查看在线演示

指出:

  • awk -F, 'index($2, "/2021 ")'用逗号将行(记录)分成字段(参见-F,),如果在第二个字段($2)中有/2021+空格,则该行被打印为
  • ^[^,]*,[^,]*/2021模式grep命令匹配
    • ^-起始字符串
    • [^,]*-零个或多个非逗号字符
    • ,[^,]*-一个,和零个或多个非逗号字符
    • /2021——文字字符串。