什么时候以及为什么我需要一个 's' 标志来按列排序
When and why do i need a 's' flag for sorting by a column
我试图按第一列对文件进行排序,如果第一列具有相同的值,则不更改第二列的顺序,
$ cat test
1 4
1 3
1 2
1 1
3 3
2 1
2 2
2 3
期望输出:
1 4
1 3
1 2
1 1
2 1
2 2
2 3
3 3
仅当我使用 sort test -s -k1,1
时才有效。
以下全部更改第二列的顺序:
sort test
sort test -k1
sort test -k1,1
sort test -s -k1
1 1
1 2
1 3
1 4
2 1
2 2
2 3
3 3
为什么我需要 -s
和 -k1,1
一起使用?
来自man sort
:
-s, --stable
stabilize sort by disabling last-resort comparison
换句话说,如果sort
发现两行有相同的键,它会比较整行来排序。您禁用了与 -s
的最后一次比较,因此保留了原始顺序。
我试图按第一列对文件进行排序,如果第一列具有相同的值,则不更改第二列的顺序,
$ cat test
1 4
1 3
1 2
1 1
3 3
2 1
2 2
2 3
期望输出:
1 4
1 3
1 2
1 1
2 1
2 2
2 3
3 3
仅当我使用 sort test -s -k1,1
时才有效。
以下全部更改第二列的顺序:
sort test
sort test -k1
sort test -k1,1
sort test -s -k1
1 1
1 2
1 3
1 4
2 1
2 2
2 3
3 3
为什么我需要 -s
和 -k1,1
一起使用?
来自man sort
:
-s, --stable stabilize sort by disabling last-resort comparison
换句话说,如果sort
发现两行有相同的键,它会比较整行来排序。您禁用了与 -s
的最后一次比较,因此保留了原始顺序。