我有一个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
——文字字符串。