2013-07-26 77 views
1

我試圖排序字段1(忽略CCC)和相等時該文件,通過場2作爲數:排序字母數字多列

ccc1 4 
cccY 1 
cccY 5 
cccX 2 
cccX 10 
ccc10 4 
ccc1 10 
ccc2 5 

我運行排序爲sort -t $'\t' -k 1.4,1n -k 2,2n「,但,我沒有得到預期的輸出:

cccY 1 
cccX 2 
cccY 5 
cccX 10 
ccc1 4 
ccc1 10 
ccc2 5 
ccc10 4 

爲什麼cccY和cccX混合它應該首先都cccX,然後雙方cccY,右

感謝,

FGV

PS - 如果你想複製它,只需運行:

echo -e "ccc1\t4\ncccY\t1\ncccY\t5\ncccX\t2\ncccX\t10\nccc10\t4\nccc1\t10\nccc2\t5" | sort -t $'\t' -k 1.4,1n -k 2,2n 
+0

對於複製/粘貼測試設置的問題+1。但是你爲什麼使用'-k 1.4 >>,1 << n'?是不是逗號是'範圍'操作符,你期望範圍的第二部分的值大於第一部分?祝你好運! – shellter

回答

1

我希望這是你所需要的。

echo -e "ccc1\t4\ncccY\t1\ncccY\t5\ncccX\t2\ncccX\t10\nccc10\t4\nccc1\t10\nccc2\t5" | sort -t $'\t' -k 1.4,1 --version-sort -k 2n 

我相信你的命令的主要問題是,在第一個關鍵數字排序,因爲有與字符混合的數字。

+0

謝謝,它的工作lika魅力.... – FGV