7/20/2017 17:00
例如,考虑一个 .csv 文件,其日期格式列在第六列中 。
如果我给出输入,7/11/2017
那么它应该过滤具有匹配输入日期的列,并且输出应该保存在另一个 .csv 文件中
我需要一个命令来根据给定的输入过滤第六列。
file.csv 具有以下条目:
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/21/2017 17:00,23,iii,89
23,54,one,tree,56,7/30/2017 17:00,23,iii,89
同样,第六列中的多个日期和时间格式的条目。在运行时给出的输入(例如 read )7/20/2017
,然后它应该过滤第 6 列中的日期并将输出条目保存到另一个 .csv 文件。
答案1
简单地与awk:
awk -F, -v d="7/20/2017" '$6~d' input.csv > dates.csv
内容dates.csv
:
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
如果日期值来自 shell 变量:
d="7/20/2017"
awk -F, -v d="$d" '$6~d' input.csv > dates.csv
答案2
假设只有一列具有该格式的日期:
$ grep -F '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
您可以将其重定向到一个新文件:
$ grep -F '7/20/2017' file.csv >new.csv
要正确解析 CSV 文件,请使用 CSV 解析器,例如内置的解析器CSVkit 工具:
$ csvgrep -c 6 -m '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89