5 个有趣的 Linux ‘sort’ 命令示例


如果您是 Linux 用户,您可能熟悉命令行界面 (CLI)。CLI 提供强大的工具,可以快速有效地执行复杂任务。“sort”命令是最有用的 CLI 工具之一。“sort”命令允许您按字母或数字顺序排序文本行,并且它提供各种选项,可以使您的生活更轻松。在本文中,我们将探讨五个有趣的 Linux “sort” 命令示例。

按数值排序

“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”选项从“fruits.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”命令提供一个良好的起点。排序愉快!

更新于:2023年4月11日

194 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.