首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带引号的字段(可能包含分隔符)对CSV进行排序

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

Stack Overflow用户
提问于 2017-12-20 06:45:17
回答 1查看 690关注 0票数 6

在shell脚本中,我尝试对CSV文件进行排序。某些字段可能包含分隔符,并用引号对其进行正确处理。假设我有一个包含以下内容的文件:

代码语言:javascript
复制
"2",D,Clair
1,R,Alice
"3","F","Dennis"
2,"P,F",Bob

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

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 23:56:35

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

代码语言:javascript
复制
$ xsv sort --no-headers --select 1,2 input.csv
1,R,Alice
2,D,Clair
2,"P,F",Bob
3,F,Dennis

csvkit也可以做到这一点:

代码语言:javascript
复制
$ 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47896287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档