我有一个csv文件,其中包含一组数据,其中一列是date。我正在尝试提取所有在特定年份有日期的行,并将其保存到一个新文件中。
文件的格式与第二列中的日期和时间类似:
0000000,10/04/2021 02:10:15,.
到目前为止我试过:
grep -E ^2020 data.csv >> temp.csv
但它只是产生了一个空的临时名单。对我怎么做有什么想法吗?
发布于 2021-10-07 03:29:28
一个潜在的解决方案是使用awk
awk -F"," '$2 ~ /\/2020 /' data.csv > temp.csv
另一个潜在的选择是使用grep
grep "\/2020 " data.csv > temp.csv
但是,grep
解决方案可能在文件的其他地方而不是在第2列中检测到"/2020“。
发布于 2021-10-07 07:17:04
虽然awk
解决方案在这里是最好的,例如。
awk -F, 'index($2, "/2021 ")' file
grep
也可以在这里使用:
grep '^[^,]*,[^,]*/2021 ' file
见在线演示
备注:
awk -F, 'index($2, "/2021 ")'
将行(记录)分割为带有逗号的字段(参见-F,
),如果第二个字段($2
)中有/2021
+空格,则打印该行。^[^,]*,[^,]*/2021
命令中的grep
模式与匹配^
-字符串的开始[^,]*
-零或多个非逗号字符,[^,]*
-a ,
和0或多个非逗号字符/2021
-一个文字子字符串。https://stackoverflow.com/questions/69474281
复制相似问题