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
引用自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
所以:
-k 2
将从键2开始,直到该行结束.
-k 1,1
将从键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
特别注意案例1和3.即使要对键1应用排序,情况1中的输出也会受到影响.使用该-s选项以稳定排序:
   -s, --stable
          stabilize sort by disabling last-resort comparison