San*_*ing 2 linux sorting bash
有人可以解释什么sort -k 1,1和sort -k 1,2做什么?
$ echo -e "9 3 5\n8 2 6\n7 4 1\n"
9 3 5
8 2 6
7 4 1
$ echo -e "9 3 5\n8 2 6\n7 4 1\n" | sort -k 2 -t " " -i
8 2 6
9 3 5
7 4 1
$ echo -e "9 3 5\n8 2 6\n7 4 1\n" | sort -k 1,1 -t " " -i
7 4 1
8 2 6
9 3 5
$ echo -e "9 3 5\n8 2 6\n7 4 1\n" | sort -k 1,2 -t " " -i
7 4 1
8 2 6
9 3 5
Run Code Online (Sandbox Code Playgroud)
引用自man sort:
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of
line). See POS syntax below
Run Code Online (Sandbox Code Playgroud)
所以:
-k 2
Run Code Online (Sandbox Code Playgroud)
将从键2开始,直到该行结束.
-k 1,1
Run Code Online (Sandbox Code Playgroud)
将从键1开始,到键1结束-k 1,2.
您的示例输入未显示差异,但如果您稍微修改它,则可能更清楚:
$ echo -e "9 3 5\n9 2 6\n7 4 1" | sort -k1,1 -t' '
7 4 1
9 2 6
9 3 5
$ echo -e "9 3 5\n9 2 6\n7 4 1" | sort -k1,2 -t' '
7 4 1
9 2 6
9 3 5
$ echo -e "9 3 5\n9 2 6\n7 4 1" | sort -k1,1 -t' ' -s
7 4 1
9 3 5
9 2 6
Run Code Online (Sandbox Code Playgroud)
特别注意案例1和3.即使要对键1应用排序,情况1中的输出也会受到影响.使用该-s选项以稳定排序:
-s, --stable
stabilize sort by disabling last-resort comparison
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |