如何使用Unix排序进行自定义排序?

珠宝

我正在使用unix sort对具有多个列的逗号分隔文件进行排序。到目前为止,这已经非常适合按数字或字母顺序对数据进行排序:

进行任何排序之前的示例文件:

C,United States,WA,Tacoma,f,1
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
A,United States,NY,New York,f,1

排序文件: $ sort -t ',' -k 2,2 -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv

排序结果:

A,Bahamas,Bahamas,Nassau,f,2
A,Canada,QC,Montreal,f,2
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1

问题是:我想根据自定义排序对第2列进行排序,这意味着我要首先是美国,然后是加拿大,然后是巴哈马:

所需的排序:

A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2

有什么方法可以通过unix sort传递自定义排序顺序,然后可以对其应用?就像是:$ sort -t ',' -k 2,2:'United States, Canada, Bahamas' -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv

谢谢!

列夫·列维茨基

另一个答案和注释通常会回答这个问题,这是实现的样子:

$ cat order
Bahamas,3
Canada,2
United States,1

$ cat data
C,United States,WA,Tacoma,f,1
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
A,United States,NY,New York,f,1

$ sort -t, -k2 data | join -t, -11 -22 order - | sort -t, -k2n -k4,5 -k6r -k7nr | cut -d, -f 3,1,4-7
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用自定义排序顺序在Unix中对字母数字字符串进行排序

使用mergesort vs自定义排序对arraylist进行排序

使用自定义排序算法对卡片组进行排序

如何使用postgresql对字符串进行自定义排序的查询排序?

如何使用自定义排序顺序在angular js中对对象进行排序?

如何使用Swift Codable根据特定的排序顺序对自定义对象进行排序

如何使用带有自定义数据的排序对 div 进行排序

如何按自定义附加关系对模型进行排序

如何对带有自定义对象的NSMutableArray进行排序?

如何按自定义顺序对值进行排序

如何通过自定义属性对Type属性进行排序

如何对自定义类中的数据进行排序

如何以自定义方式对多维数组进行排序

如何根据自定义日期 Dart 对列表进行排序

使用自定义比较器对ArrayList <String>进行排序

使用jquery或Javascript进行自定义表格排序

使用自定义API进行排序-removeAndAppend

使用自定义顺序对 Django 查询集进行排序

使用Angular的orderBy指令进行自定义排序

使用自定义谓词对numpy数组进行排序

使用自定义列表对Dataweave进行排序

使用AngularJs在ngTable中进行自定义排序

使用pageable对自定义JPA查询进行排序

使用自定义联接表主键对BelongsToMany进行排序

使用Spinner Android对自定义Listview项进行排序

使用const成员对自定义对象的向量进行排序

使用自定义属性对FieldList进行排序

使用自定义比较功能进行c ++排序

在ruby中使用自定义值系统进行排序