使用命令行按日期过滤大数据文件
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
备注:
awk -F, 'index(, "/2021 ")'
用逗号将行(记录)分割成字段(见-F,
),如果第二个字段有/2021
+space (</code>) 该行被打印出来[=44=]
<li><code>grep
命令中的 ^[^,]*,[^,]*/2021
模式匹配
^
- 字符串开头
[^,]*
- 零个或多个非逗号字符
,[^,]*
- 一个 ,
和零个或多个非逗号字符
/2021
- 文字子串。
我有一个 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
备注:
awk -F, 'index(, "/2021 ")'
用逗号将行(记录)分割成字段(见-F,
),如果第二个字段有/2021
+space (</code>) 该行被打印出来[=44=] <li><code>grep
命令中的^[^,]*,[^,]*/2021
模式匹配^
- 字符串开头[^,]*
- 零个或多个非逗号字符,[^,]*
- 一个,
和零个或多个非逗号字符/2021
- 文字子串。