Linux sort命令入门教程(8例)
在此页
- Linux 排序命令
- Q1。如何使用排序命令?
- Q2。如何让排序忽略前导空格?
- Q3。如何使排序忽略大小写?
- Q4。如何进行排序比较数字?
- Q5。如何使用人类可读的数值进行排序?
- Q6。如何使排序只检查排序的输入?
- Q7。如何使排序合并已经排序的文件?
- Q8。如何让排序结果写入文件?
- 结论
寻找命令行实用程序来对文本文件中的内容进行排序?只需看看 Sort,这是专门为此目的而构建的工具。在本教程中,我们将使用一些易于理解的示例来讨论此命令。但在我们这样做之前,值得一提的是这里的所有示例都已经在 Ubuntu 22.04 LTS 机器上进行了测试。
Linux排序命令
Sort 命令允许您对文本文件中的行进行排序。以下是它的语法:
sort [OPTION]... [FILE]...
以下是工具手册页对其的描述:
Write sorted concatenation of all FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
以下是一些 Q&A 风格的示例,它们应该可以让您很好地了解 sort 命令的工作原理。
Q1。如何使用排序命令?
假设您有一个包含一些名称的文件,并且您希望按字母顺序对这些名称进行排序。然后您需要做的就是将文件名作为输入传递给排序命令。
例如:
sort file1
因此,如果文件 1 包含以下行:
Zimbabwe
Serbia
Norway
Australia
那么输出将是:
Australia
Norway
Serbia
Zimbabwe
这里有一个例子:

Q2。如何让排序忽略前导空格?
根据您的区域设置,当行包含前导空格时,您可能会看到排序产生意外的结果。例如:
假设文件包含以下行:
Zimbabwe
Serbia
Norway
Australia
然后你运行排序,只看到以下结果:
Norway
Serbia
Australia
Zimbabwe
这可能看起来出乎意料,但实际发生的是包含前导空格的行根据空格排序,而其他行则按字母顺序排序。要确保排序命令忽略前导空格,请使用 -b 选项。所以在那种情况下,你会得到以下结果:
Australia
Norway
Serbia
Zimbabwe
Q3.如何使排序忽略大小写?
如果文件中的单词/行同时以大写和小写字符开头,则排序会在顶部显示大写字母。但是,如果需要,您可以使用 -f 命令行选项更改此行为。
例如:
sort -f file1
Q4.如何进行排序比较数字?
假设一个文件只包含数字,你想对它们进行排序。然后可以使用 -g 命令行选项使这成为可能。
sort -g file1
例如具有以下内容的文件:
32000
2500
50000
54
可以使用 sort 命令进行排序以产生以下结果:
54
2500
32000
50000
Q5.如何使用人类可读的数值进行排序?
如果您希望 sort 使用人类可读的数值(如 1K、2G 等),请使用 -h 命令行选项。
sort -h file1
因此,例如,一个包含以下行的文件:
1M
2G
3K
可以使用 -h 选项按以下方式排序:
3K
1M
2G
Q6.如何使排序只检查排序的输入?
以防万一您希望 sort 仅检查文件是否已排序,请使用 -c 命令行选项。
sort -c file1
例如,如果 file1 包含以下行:
dhg
lkh
zyb
abd
然后使用 -c 将看到 sort 产生以下输出:
sort: file1:4: disorder: abd
所以你观察到该工具不仅指出了那里的混乱,而且还输出了它的位置。
Q7.如何使排序合并已经排序的文件?
如果要排序合并两个已排序的文件,请使用 -m 命令行选项。
sort -m file1 file2
例如,在我的案例中,file1 和 file2 都包含以下行:
abd
dhg
lkh
zyb
下面是 -m 选项如何合并这些文件:
abd
abd
dhg
dhg
lkh
lkh
zyb
zyb
Q8.如何使排序结果写入文件?
默认情况下,sort 命令将输出写入 STDOUT。但是,您可以使用 -o 选项强制它写入给定文件。
例如:
sort file1 -o output.txt
结论
排序命令提供了很多选项。我们在这里讨论了几个关键问题。我们建议您先练习这些,完成后,前往命令手册页了解更多信息。