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

Filtering large data file by date using command line

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

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

000000000,10/04/2021 02:10:15 上午,.....

到目前为止我试过:

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

但它只是生成了一个空的临时列表。关于如何执行此操作的任何想法?

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

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

另一个可能的选择是 grep:

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

但是,grep 解决方案可能会在文件的其他位置检测到“/2020”,而不是在第 2 列中。

虽然awk解决方案在这里是最好的,例如

awk -F, 'index(, "/2021 ")' file
这里也可以用

grep

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

online demo

备注:

  • awk -F, 'index(, "/2021 ")'用逗号将行(记录)分割成字段(见-F,),如果第二个字段有/2021+space (</code>) 该行被打印出来[=44​​=] <li><code>grep 命令中的 ^[^,]*,[^,]*/2021 模式匹配
    • ^ - 字符串开头
    • [^,]* - 零个或多个非逗号字符
    • ,[^,]* - 一个 , 和零个或多个非逗号字符
    • /2021 - 文字子串。