我正在尝试按字段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)
我希望这是你需要的。
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
我相信你的命令中的主要问题是在第一个键中使用数字排序,因为有数字与字符混合。