5 个有趣的 Linux 排序命令示例

linuxoperating systemopen source更新于 2026/2/4 14:52:17

如果您是 Linux 用户,您可能对命令行界面 (CLI) 并不陌生。CLI 提供了强大的工具,可以快速高效地执行复杂任务。其中最实用的 CLI 工具之一是 sort 命令。sort 命令允许您按字母顺序或数字顺序对文本行进行排序,并提供多种选项,让您的工作更轻松。在本文中,我们将探讨五个有趣的 Linux 排序命令示例。

按数值排序

sort 命令可用于按数值顺序对数据进行排序。这在处理包含数值的数据集时非常有用。要按数值排序,请使用 -n 选项。以下是示例 -

$ cat numbers.txt
10
2
30
4
20

$ sort -n numbers.txt
2
4
10
20
30

在此示例中,sort 命令使用 -n 选项按数字顺序对文件"numbers.txt"进行排序。

逆序排序

有时,您可能需要逆序排序数据。例如,您可能希望按日期和时间对文件列表进行排序,从最新的文件开始。要逆序排序,请使用 -r 选项。以下是示例 -

$ ls -l
total 0
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 23 14:14 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:13 file3.txt

$ ls -l | sort -r
total 0
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 23 14:14 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:13 file3.txt

在此示例中,'ls -l' 命令列出了当前目录中的文件,而 'sort -r' 命令则按相反顺序对列表进行排序。

按列排序

'sort' 命令还可以按特定列对数据进行排序。这在处理包含多列数据的数据集时非常有用。要按特定列排序,请使用 '-k' 选项。以下是示例 -

$ cat names.txt
John Smith,25
Mary Johnson,30
Bob Jones,20
Tom Davis,35

$ sort -t ',' -k 2 names.txt
Bob Jones,20
John Smith,25
Mary Johnson,30
Tom Davis,35

在此示例中,'names.txt' 文件包含两列数据,两列之间用逗号分隔。'sort' 命令使用 '-t' 选项指定字段分隔符(逗号),并使用 '-k 2' 选项按第二列(年龄列)排序。

按唯一值排序

'sort' 命令还可以从数据集中删除重复行。为此,请使用 '-u' 选项。以下是示例 -

$ cat fruits.txt
apple
orange
banana
orange
apple

$ sort -u fruits.txt
apple
banana
orange

在此示例中,sort 命令使用 -u 选项从 fruit.txt 文件中删除重复行。

排序和合并文件

sort 命令还可以将多个已排序文件合并为一个。这在处理已拆分为多个文件的大型数据集时非常有用。要合并文件,请使用 -m 选项。以下是示例 -

$ cat file1.txt
1
3
5

$ cat file2.txt
2
4
6

$ sort -m file1.txt file2.txt
1
2
3
4
5
6

在此示例中,sort 命令使用 -m 选项将 file1.txt 和 file2.txt 文件合并为一个已排序的文件。

忽略前导字符排序

有时,数据集中可能包含您不想在排序时考虑的前导字符。例如,您可能有一个以日期戳开头的文件名列表,并且您只想按文件名排序。要忽略前导字符,请使用 -b 选项。以下是示例 -

$ ls
2023-03-22_file1.txt
2023-03-23_file3.txt
2023-03-21_file2.txt

$ ls | sort -b -t '_' -k 2
2023-03-22_file1.txt
2023-03-21_file2.txt
2023-03-23_file3.txt

在此示例中,'ls' 命令列出了当前目录中的文件。'sort' 命令使用 '-b' 选项忽略前导空格,使用 '-t' 选项指定字段分隔符(下划线)。'-k 2' 选项按第二个字段(文件名)对文件进行排序,同时忽略前导日期戳。

按人性化大小排序

如果您正在处理文件或目录,您可能希望按大小排序。但是,按字节大小排序可能难以读取和比较。要按人性化大小(例如 KB、MB、GB)排序,请使用 '-h' 选项。以下是示例 -

$ du -h
10M     file1.txt
100K    file2.txt
1G      file3.txt

$ du -h | sort -h
100K    file2.txt
10M     file1.txt
1G      file3.txt

在此示例中,'du' 命令使用 '-h' 选项以人性化格式显示当前目录中文件的磁盘使用情况。'sort' 命令使用 '-h' 选项按大小对文件进行排序,格式为人性化格式。

按日期和时间排序

如果您正在处理文件,则可能需要按日期和时间对其进行排序。要按日期和时间排序,请使用 '-t' 选项指定字段分隔符,并使用 '-k' 选项按日期和时间列排序。以下是示例 -

$ ls -l
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt
-rw-r--r-- 1 user user 0 Mar 22 13:45 file2.txt
-rw-r--r-- 1 user user 0 Mar 21 12:30 file3.txt

$ ls -l | sort -t ' ' -k 6,7
-rw-r--r-- 1 user user 0 Mar 21 12:30 file3.txt
-rw-r--r-- 1 user user 0 Mar 22 13:45 file2.txt
-rw-r--r-- 1 user user 0 Mar 23 14:15 file1.txt

在此示例中,'ls -l' 命令列出了当前目录中的文件及其修改日期和时间。'sort' 命令使用 '-t' 选项指定字段分隔符(空格),并使用 '-k 6,7' 选项按日期和时间列排序。

按随机顺序排序

最后,您还可以按随机顺序对数据进行排序。这在测试或生成随机数据时非常有用。要按随机顺序排序,请使用 '-R' 选项。以下是示例 -

$ cat names.txt
John
Mary
Bob
Tom

$ sort -R

在此示例中,'sort' 命令使用 '-R' 选项对 'names.txt' 文件中的名称进行随机排序。这对于生成随机测试数据或打乱列表非常有用。

结论

sort 命令是 Linux 命令行中用于排序和操作数据的强大工具。本文探讨了五个有趣的 sort 命令示例,包括按数值排序、按倒序排序、按列排序、按唯一值排序以及合并已排序文件。这些示例应该能为您在自己的 Linux 命令行工作流程中使用 sort 命令奠定良好的基础。祝您排序愉快!


相关文章


有用资源