假定您具有以下内容的未排序文件:
identifier,count=Number
identifier, extra information
identifier, extra information
...
我想对这个文件进行排序,以便对于每个id,首先写上带有计数的行,然后写上带有额外信息的行.我只能将sort unix命令与选项-k1,1一起使用,但可以稍作更改以进行这种排序.
举个例子
a,Count=1
a,giulio
aa,Count=44
aa,tango
aa,information
ee,Count=2
bb,que
f,Count=3
b,Count=23
bax,game
f,ee
c,Count=3
c,roma
b,italy
bax,Count=332
a,atlanta
bb,Count=78
c,Count=3
输出应为
a,Count=1
a,atlanta
a,giulio
aa,Count=44
aa,information
aa,tango
b,Count=23
b,italy
bax,Count=332
bax,game
bb,Count=78
bb,que
c,Count=3
c,roma
ee,Count=2
f,Count=3
f,ee
但我得到:
aa,Count=44
aa,information
aa,tango
a,atlanta
a,Count=1
a,giulio
bax,Count=332
bax,game
bb,Count=78
bb,que
b,Count=23
b,italy
c,Count=3
c,Count=3
c,roma
ee,Count=2
f,Count=3
f,ee
我尝试在标识符的末尾和/或count字段和其他字符的开头添加空格,但是这些方法均无效.
关于如何执行此排序的任何指针?
编辑:
例如,如果您考虑ID开头为a的产品,则其中一个产品的信息为“ atlanta”并出现在Count之前(但我希望Count出现在任何信息之前).另外,对于ID,bb应按字母顺序在b之后.为了使我的问题更清楚:如何获得按字母顺序排序的ID,以使对于给定的ID,带有Count的行出现在其他行之前.以及如何使用sort -k1,1(这是我正在研究的一个小组项目,我不能随意更改sort命令),并且可能更改内容(例如,我尝试在所有项目中添加“〜”信息,以便计数在之前)
解决方法:
您需要告诉排序,逗号用作字段分隔符
sort -t, -k1,1
对于ASCII排序,请确保未设置LC_ALL = C以及LANG和LANGUAGE