sort 是一条按顺序排列文件中数据的 Unix 命令。
| Option | Meaning |
|---|---|
-u |
Make each lines of output unique |
Section 18.1: sort 命令的输出
sort 命令用于根据行内容进行排序。
从文件中输入
sort file.txt
从命令中输入
你可以对任何输出命令进行排序。在本例中,文件列表遵循指定的模式。
find * -name pattern | sort
Section 18.2: 合并输出中相同内容
如果输出的每一行都需要将相同内容合并为一行,可添加 -u 选项。
显示文件夹中文件的所有者
ls -l | awk '{print $3}' | sort -u
Section 18.3: 数值排序
假设我们有这样一个文件
test>>cat file
10.Gryffindor
4.Hogwarts
2.Harry
3.Dumbledore
1.The sorting hat
要对该文件进行数字排序,请使用带 -n 选项的排序:
test>>sort -n file
文件排序的输出如下:
1.The sorting hat
2.Harry
3.Dumbledore
4.Hogwarts
10.Gryffindor
倒序排序: 要倒序排序,请使用 -r 选项
要颠倒上述文件的排序顺序,请使用
sort -rn file
文件排序的输出如下:
10.Gryffindor
4.Hogwarts
3.Dumbledore
2.Harry
1.The sorting hat
Section 18.4: 按键值排序
假设我们有这样一个文件
test >> cat Hogwarts
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Hermione Goyle Lockhart Tonks
Ron Snape Olivander Newt
Ron Goyle Flitwick Sprout
要以列为键对文件进行排序,请使用 -k 选项:
test>>sort -k 2 Hogwarts
这将以第 2 列为关键字对文件进行排序:
Ron Goyle Flitwick Sprout
Hermione Goyle Lockhart Tonks
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Ron Snape Olivander Newt
现在,如果我们要使用次关键字和主关键字对文件进行排序,请使用
sort -k 2,2 -k 1,1 Hogwarts
这将首先以列 2 作为主键对文件进行排序,然后以列 1 作为次键对文件进行排序:
Hermione Goyle Lockhart Tonks
Ron Goyle Flitwick Sprout
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Ron Snape Olivander Newt
如果我们需要对一个有多个键的文件进行排序,那么对于每个 -k 选项,我们都需要指定排序的结束位置。因此,"-k1,1" 表示在第一列开始排序,在第一列结束排序。
-t 选项
在前面的例子中,文件的默认分隔符是制表符。如果要对非默认分隔符的文件进行排序,我们需要使用 -t 选项来指定分隔符。假设文件如下
test >> cat file
5.|Gryffindor
4.|Hogwarts
2.|Harry
3.|Dumbledore
1.|The sorting hat
要根据第二列对文件进行排序,请使用
test>>sort -t "|" -k 2 file
这将对文件进行如下排序:
3.|Dumbledore
5.|Gryffindor
2.|Harry
4.|Hogwarts
1.|The sorting hat