繁体   English   中英

如何使用带引号的字段(可能包含分隔符)对 CSV 进行排序

[英]How to sort a CSV with quoted fields (that may contain the separator)

在 shell 脚本中,我试图对 CSV 文件进行排序。 某些字段可能包含分隔符并被引用以正确处理此问题。 假设我有一个文件:

"2",D,Clair
1,R,Alice
"3","F","Dennis"
2,"P,F",Bob

我想在第一列上排序,然后是第三列。 结果应该是:

1,R,Alice
2,"P,F",Bob
"2",D,Clair
"3","F","Dennis"

字段中也可能有转义的双引号。 通常,CSV 将符合RFC 4180

我尝试使用sort -t , -k 1,1 -k 3,3来执行此操作,但这不起作用,因为sort不知道 CSV 中引号的特殊含义。 我找不到让sort以这种方式运行的方法。 也许我应该使用另一个命令,但我找不到任何命令。

如何对我的 CSV 进行排序?

我会使用出色的xsv来完成这项工作:

$ xsv sort --no-headers --select 1,2 input.csv
1,R,Alice
2,D,Clair
2,"P,F",Bob
3,F,Dennis

csvkit也可以做到:

$ csvsort --no-header-row --columns 1,2 input.csv
a,b,c
1,R,Alice
2,D,Clair
2,"P,F",Bob
3,F,Dennis

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM