Rin*_*nke 6 unix linux shell posix sh
在 shell 脚本中,我试图对 CSV 文件进行排序。某些字段可能包含分隔符并被引用以正确处理此问题。假设我有一个文件:
"2",D,Clair
1,R,Alice
"3","F","Dennis"
2,"P,F",Bob
Run Code Online (Sandbox Code Playgroud)
我想在第一列上排序,然后是第三列。结果应该是:
1,R,Alice
2,"P,F",Bob
"2",D,Clair
"3","F","Dennis"
Run Code Online (Sandbox Code Playgroud)
字段中也可能有转义的双引号。通常,CSV 将符合RFC 4180。
我试图用 a 来做到这一点,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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
629 次 |
最近记录: |