-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