linux-仅使用k1,1执行排序

假定您具有以下内容的未排序文件:

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

上一篇:java-如何按行自然顺序和列插入顺序对番石榴表进行排序


下一篇:php-Yii Dataprovider日期排序