csv 文件中的最后一天
Last Day of Month in csvfile
我尝试删除 csv 文件中与最后几天不匹配的所有日期。但我找不到正确的解决方案。
date,price
2018-07-02,162.17
2018-06-29,161.94
2018-06-28,162.22
2018-06-27,162.32
2018-06-12,163.01
2018-06-11,163.53
2018-05-31,164.87
2018-05-30,165.59
2018-05-29,165.42
2018-05-25,165.96
2018-05-02,164.94
2018-04-30,166.16
2018-04-27,166.69
我想要的输出变成
date,price
2018-06-29,161.94
2018-05-31,164.87
2018-04-30,166.16
我用 cut + grep 试试
cut -d, -f1 file.csv | grep -E "28|29|30"
组合-f1,2 时工作但什么也没带。
我发现 csvkit 在我看来是正确的工具,但我发现它不是多个 grep 的解决方案。
csvgrep -c 1 -m 30 file.csv
给我正确的结果,但如何组合多个搜索选项?我尝试 -m 28,29,30 和 -m 28 -m 29 -m 30 都不起作用。最好在每个月的最后一天使用。
也许有人在这里有一个想法。
谢谢你,周日愉快
西尔维奥
您想获取该月最后一天的所有记录。但月份的长度各不相同 (28-29-30-31)。
我不明白你为什么使用 cut
来提取第一个字段(日期部分),因为第二个字段中的数据看起来根本不像日期 (xx-xx)。
我建议直接使用grep
来显示符合以下模式的行mm-dd
;其中 mm
是月份编号,dd
是月份的最后一天。
这个命令应该可以解决问题:
grep -E "01-31|02-(28|29)|03-31|04-30|05-31|06-30|07-31|08-30|09-31|10-30|11-31|12-30" file.csv
此命令将给出以下输出:
2018-05-31,164.87
2018-04-30,166.16
我尝试删除 csv 文件中与最后几天不匹配的所有日期。但我找不到正确的解决方案。
date,price
2018-07-02,162.17
2018-06-29,161.94
2018-06-28,162.22
2018-06-27,162.32
2018-06-12,163.01
2018-06-11,163.53
2018-05-31,164.87
2018-05-30,165.59
2018-05-29,165.42
2018-05-25,165.96
2018-05-02,164.94
2018-04-30,166.16
2018-04-27,166.69
我想要的输出变成
date,price
2018-06-29,161.94
2018-05-31,164.87
2018-04-30,166.16
我用 cut + grep 试试
cut -d, -f1 file.csv | grep -E "28|29|30"
组合-f1,2 时工作但什么也没带。
我发现 csvkit 在我看来是正确的工具,但我发现它不是多个 grep 的解决方案。
csvgrep -c 1 -m 30 file.csv
给我正确的结果,但如何组合多个搜索选项?我尝试 -m 28,29,30 和 -m 28 -m 29 -m 30 都不起作用。最好在每个月的最后一天使用。
也许有人在这里有一个想法。
谢谢你,周日愉快 西尔维奥
您想获取该月最后一天的所有记录。但月份的长度各不相同 (28-29-30-31)。
我不明白你为什么使用 cut
来提取第一个字段(日期部分),因为第二个字段中的数据看起来根本不像日期 (xx-xx)。
我建议直接使用grep
来显示符合以下模式的行mm-dd
;其中 mm
是月份编号,dd
是月份的最后一天。
这个命令应该可以解决问题:
grep -E "01-31|02-(28|29)|03-31|04-30|05-31|06-30|07-31|08-30|09-31|10-30|11-31|12-30" file.csv
此命令将给出以下输出:
2018-05-31,164.87
2018-04-30,166.16