当您处理大量数据时,使用数据完成任务就变成了一项乏味的任务。 如果您的数据正确排序,您的工作会大大减少。 这正是 sort 命令的工作。
Linux 中的 sort 命令,顾名思义,就是用来按指定的顺序对文本文件的内容进行排序。 它仅适用于文本文件。 当 sort 命令接收到一个文件时,它默认假定内容为 ASCII 格式。
排序命令用于什么?
一般来说,sort命令用于对输入数据按字母或数字的升序或降序进行排序。 这个命令使用起来非常简单,与我们之前使用过的其他命令相比,它确实没有太多“肉”。 但它是一个非常方便的实用程序。 让我们看一下语法并了解 sort 命令的一些基础知识。
了解 Linux 中的排序命令
sort 命令是最简单的命令之一,但也是您可用的最有用的命令之一。 此命令的语法如下所示:
sort [options] FileName.txt
“选项”负责规定文件(此处为 FileName.txt)排序所依据的规则。 如果未提及任何选项,Linux 中的 sort 命令将使用其默认规则对文件进行排序。 sort 命令的默认规则是:
- 按字母升序对文本进行排序
- 字母位于排序列表中的数字下方
- 小写字母的位置高于其对应的大写字母
Linux 中 sort 命令的命令选项
Linux 中的 sort 命令为我们提供了多种选项来自定义我们如何对文本文件进行排序。 这些是下面列出的一些选项,以及它们对排序命令的影响。
- -n: 对数据进行排序
- -R:以随机顺序显示值
- -r: 按降序排列数据
- -k:当数据被分成多列时使用
- -u: 仅排序和显示唯一值
- -这: Save 不同文件中的输出
- -C: 检查指定文件是否排序
玩转这些选项,因为它们可以相互结合以获得特定的结果。
在 Linux 中使用排序命令
让我们看看 sort 命令的用法,并了解如何使用它可用的不同选项。
按字母顺序对文件进行排序
sort 命令最基本的用途是按字母顺序对文件的内容进行排序。 由于这已包含在 sort 命令的默认规则中,因此我们不需要对文本文件使用任何选项来执行此操作。 对于这个演示,我们将创建一个名为 input.txt 的文件并在其中添加一些随机单词。
word choice voice Linux
要按字母顺序对该文件进行排序,我们使用以下命令:
sort input.txt
在 Linux 中使用 sort 命令对数字进行排序
默认情况下,Linux 中的 sort 命令不会比较数字来检查特定数字是否大于另一个数字。 它只是检查任何数字的第一个数字是否大于或小于下一个数字。
51510 10000 20194 10201 50010
在 Linux 中使用 sort 命令按降序排序
再次考虑我们的 input.txt 文件,其内容与上述完全相同。 Linux 中的反向排序命令会按降序对文件的内容进行排序。
sort -r input.txt
正如您在上面的示例中所看到的,输出现在按降序排序。
以随机顺序对文件进行排序 (-R)
这个特定选项的用例将更多地出现在 shell 脚本中,以从文件中随机获取信息。 让我们随机排序我们的 input.txt 文件。
sort -R input.txt
如您所见,所有命令结果都显示了不同的排序顺序。
按列对文件进行排序
让我们创建一个包含两列的文件。 列只是所有行中常见的两个单词之间的分隔。 在下面的示例中,我用空格分隔两个字符串,并在整个数据集中保持相同的模式。
100 Drinks 40 Snacks 250 Meal 80 Dessert
让我们按第一列和第二列对这些数据进行排序。
sort -k <column number> <file or text data>
注意第一个输出是如何按第二列的“第一个字母”排序的,而第二个输出是如何按第一列的“第一个数字”排序的。
sort 命令并不真正理解数字 100 大于数字 40 的事实。它只检查第一个数字。 如果我们结合 -n 上述现有命令的选项?
这正是我们想要的! 惊人的。
仅排序和输出唯一值
如果您有一个包含许多重复值的文件,并且您只需要获取所有唯一值的排序列表,那么这就是您需要使用的命令。 让我们创建一个包含一些重复值的文件:
one one two three four four
让我们运行排序命令 -u 选项。
对文件进行排序并将输出定向到文件
您可能已经注意到 sort 命令不会更改文件内容,而只会在终端上显示更新后的输出。 那么我们如何将输出保存到文件中呢? 我们可以使用输出重定向运算符 >
或使用 -这 选项在这里。
对于这个演示,让我们回到我们的文件 input.txt。 要对该文件进行排序并将其发送到另一个文件 output.txt,我们使用以下命令:
sort -o <output file> <input file or text data>
检查一组数据是否已经排序
如果你想检查一个大的数字或单词文件是否已经排序,你可以使用 -C 选项。
sort -c <filename>
如您所见,排序后的顺序显示为“Disorder:”,后跟不按顺序的单词。 如果文件正确排序,则不会有输出。
结论
这将我们带到 Linux 中排序命令教程的结尾。 我们在这里介绍了一些对数据进行排序的常用方法,但您可以使用 man 命令探索 Linux 中的 sort 命令以查看详细的手册页。