2013-07-26 48 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