-1
我的输入文件如下。在Linux中排序2列
A 0
A 2
的C 2
乙11
的C 5
d 7
乙3
我希望我的输出成为像以下。请在Linux中使用SORT命令来帮助我。
谢谢。
乙11
乙3
d 7
的C 5
的C 2
A 2
A 0
第二列首先被排序,然后第一列被布置。
我的输入文件如下。在Linux中排序2列
A 0
A 2
的C 2
乙11
的C 5
d 7
乙3
我希望我的输出成为像以下。请在Linux中使用SORT命令来帮助我。
谢谢。
乙11
乙3
d 7
的C 5
的C 2
A 2
A 0
第二列首先被排序,然后第一列被布置。
这是可以做到,但它不漂亮:
for key in $(sort -n -k2 -r <inFile | awk 'ex[$1]==0{print $1;ex[$1]=1}'); do
awk -vK=$key '$1==K{print}' <inFile | sort -r -n -k2
done
这就是for
环路内使用会减少值的顺序返回键(字母)的列表的命令,并与重复删除。 sort
部分确保所有行都处于缩减值顺序(数字,键位2,反向顺序),而awk
仅使用“doesExist”关联数组ex[]
来打印每个键的第一个以丢弃后续的键。这将为您提供按顺序键B,D,C,A
。
然后,对于每个以该顺序这些键,它会提取所有从输入文件数据该键,和排序基于所述递减值的那些。
最终的结果是关键集的通过减少最高值和分选内的行,每行键设置通过减少值:
B 11
B 3
D 7
C 5
C 2
A 2
A 0
'sort'是可怕的任意订单。 – 2015-02-09 05:23:58
你应该编写自己的排序。标准的“排序”对定制标准没有多大帮助。在'python','js'或任何您熟悉的脚本语言中,这应该很容易 – slezica 2015-02-09 05:48:52