1

我正在尝试按字段 1(忽略 ccc)对这个文件进行排序,当相等时,按字段 2 作为数字:

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

我正在运行 sort as 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
4

1 回答 1

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

我相信您命令中的主要问题是第一个键中的数字排序,因为数字与字符混合。

于 2013-07-26T22:28:33.373 回答