如何在 Linux 中使用排序命令

当您处理大量数据时,使用数据完成任务就变成了一项乏味的任务。 如果您的数据正确排序,您的工作会大大减少。 这正是 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 上述现有命令的选项?

用数字对 2 列进行排序用数字对 2 列进行排序

这正是我们想要的! 惊人的。

仅排序和输出唯一值

如果您有一个包含许多重复值的文件,并且您只需要获取所有唯一值的排序列表,那么这就是您需要使用的命令。 让我们创建一个包含一些重复值的文件:

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 命令以查看详细的手册页。