Unix 按多列排序

Unix 按多列排序

我无法理解unix排序。考虑以下文件(制表符分隔)

aa  ~ a1
aa  B
b   A
b   ~ e
bb  B
bb  ~ B

打电话时:

cat tmp2 | sort -t $'\t' -k1,2

我明白了

aa  ~ a1
aa  B
b   A
bb  B
bb  ~ B
b   ~ e

据我了解, -t $'\t' 表示将分隔符视为制表符而不是空格, -k1,2 表示按第一列排序,如果两行具有相同的第一列,然后到第二个。但那样的话,我的最后一个“b”不应该出现在第四行吗?

答案1

否,-k1,2表示对从第一个字段开头开始到第二个字段结尾结束的行部分进行排序。

要对第一个字段进行排序,然后对第二个字段进行排序,则为:

sort -k1,1 -k2,2

相关内容