sort 排序命令

发布时间 2023-12-13 16:32:56作者: Lz_蚂蚱

大佬文章,请优先查看!!!

Linux 系统 sort 命令详解


Linux系统提供了 sort 命令来对文本文件内容进行排序。sort 命令可以按行、字段或数字进行排序,并支持各种排序选项,以满足不同的排序需求。

基本语法

sort [选项] [文件]

选项

选项 说明
-r 逆序排序(降序)
-n 按数值进行排序
-k 字段
按指定的字段进行排序。该参数可指定多个字段,使用逗号分隔。默认字段分隔符为制表符或空格
-t 分隔符
指定字段的分隔符
-u 去除重复行,仅保留第一次出现的行
-f 忽略大小写进行排序
-b 忽略行首的空白字符进行排序
-c 检查文件是否已经排好序,如果未排序则输出第一个不符合排序顺序的行
-f 忽略大小写进行排序。例如,sort -f file.txt 将忽略行首字母的大小写进行排序
-b 忽略行首的空白字符进行排序
-c 检查文件是否已经排好序,如果未排序则输出第一个不符合排序顺序的行

举个?

按行排序

sort 命令默认按照字典顺序对每行进行排序。例如,假设有一个名为 file.txt 的文本文件,内容如下:

apple
cherry
banana

要按字母顺序对文件进行排序,可以运行以下命令:

sort file.txt

运行结果如下:

apple
banana
cherry

按字段排序

通常情况下,文本文件的每行都包含多个字段,字段之间通过分隔符进行分割(例如制表符或空格)。sort 命令可以按照指定字段进行排序。

假设有一个名为 data.txt 的文本文件,内容如下:

Tom 25 Male
Jerry 22 Female
Alice 27 Female

要按第二个字段(年龄)进行排序,可以使用 -k 选项指定要排序的字段,并使用 -t 选项指定字段的分隔符(这里是空格):

sort -k 2 -t ' ' data.txt

运行结果如下:

Jerry 22 Female
Tom 25 Male
Alice 27 Female

数字排序

默认情况下,sort 命令按照字典顺序对数字进行排序。如果需要按照数值大小排序,可以使用 -n 选项。

假设有一个名为 numbers.txt 的文本文件,内容如下:

10
2
100
50

要按照数字大小排序,可以运行以下命令:

sort -n numbers.txt

运行结果如下:

2
10
50
100

逆序排序

默认情况下,sort 命令按升序排序(从小到大)。如果需要按降序排序(从大到小),可以使用 -r 选项。

继续以 numbers.txt 文件为例,要按照逆序进行排序,可以运行以下命令:

sort -n -r numbers.txt

运行结果如下:

100
50
10
2

去除重复行

sort 命令还可以用于去除文本文件中的重复行,只保留第一次出现的行。使用 -u 选项即可实现。

假设有一个名为 names.txt 的文本文件,内容如下:

Tom
Jerry
Tom
Alice
Jerry

要去除重复行,可以运行以下命令:

sort -u names.txt

运行结果如下:

Alice
Jerry
Tom

按照多个字段排序

sort 命令支持按照多个字段进行排序。可以使用多个 -k 选项来指定要排序的字段和排序顺序。例如,假设有一个名为 data.txt 的文本文件,内容如下:

Tom 25 Male
Jerry 22 Female
Alice 27 Female

要先按性别(第三个字段)降序排序,再按年龄(第二个字段)升序排序,可以运行以下命令:

sort -k 3r -k 2n data.txt

运行结果如下:

Alice 27 Female
Jerry 22 Female
Tom 25 Male

这里使用 -k 3r 指定按第三个字段降序排序(r 表示逆序),再使用 -k 2n 指定按第二个字段升序排序(n 表示按数值排序)。

忽略前导字符

有时文本文件的每行可能会包含一些前导字符,例如空格或制表符。如果希望在排序时忽略这些前导字符,可以使用 -b 选项。例如,假设有一个名为 file.txt 的文本文件,内容如下:

    apple
	banana
	cherry

要在排序时忽略前导空格和制表符,可以运行以下命令:

sort -b file.txt

运行结果如下:

apple
banana
cherry

合并多个文件排序

sort 命令还可以合并多个文件并进行排序。只需将要排序的文件名依次列出即可。例如,假设有两个文件 file1.txt 和 file2.txt,内容分别如下:

=== file1.txt ===
apple
cherry

=== file2.txt ===
banana
orange

要将两个文件合并后按字典顺序排序,可以运行以下命令:

sort file1.txt file2.txt

运行结果如下:

apple
banana
cherry
orange

合并后的结果是将两个文件的内容整体排序。

从标准输入读取数据排序

除了从文件中读取数据,sort 命令还可以从标准输入读取数据并进行排序。这样可以方便地与其他命令结合使用。例如,要对一组数字进行排序,可以使用管道将其传递给 sort 命令。例如:

echo -e "3\n1\n2" | sort -n

运行结果如下:

1
2
3

这里使用 echo 命令生成一组数字,并通过管道 | 将其传递给 sort 命令进行排序。