如何使用 csvgrep 填充 CSV 文件并仅打印某些列?

How to fillter a CSV file with csvgrep and print only certain columns?

提问人:Ciro Santilli OurBigBook.com 提问时间:10/10/2023 更新时间:10/11/2023 访问量:46

问:

是否可以在一次调用中实现,或者我是否需要使用管道重新解析行?

例如,给定:

测试 .csv

ok,1
ok,2
ko,3

如果第一列是,我只想要第二列,即所需的输出是:ok

1
2

我知道该怎么做的唯一方法是用管道进入:csvcut

csvgrep -H -c1 -mok test.csv | csvcut -c2 | tail -n+2

文档中的这个例子:https://csvkit.readthedocs.io/en/latest/tutorial/2_examining_the_data.html#csvgrep-find-the-data-you-need 做了类似的事情,所以也许这是唯一的方法?

csvcut -c county,item_name,total_cost data.csv | csvgrep -c county -m LANCASTER | csvlook
csvkit

评论

0赞 aborruso 10/11/2023
CSVKIT 以这种方式工作。还有其他工具可以在一个命令中执行此操作,但您可能并不关心它们。
0赞 Ciro Santilli OurBigBook.com 10/11/2023
@aborruso谢谢。顺便说一句,有什么好的编译工具可能会更快吗?我要再尝试 github.com/DavyLandman/csvtools 一点。

答:

1赞 aborruso 10/11/2023 #1

使用 Miller,您可以运行

mlr --csv -N filter '$1=="ok"' then cut -f 2 input.csv

获取

1
2

作为我使用的输入

ok,1
ok,2
ko,3