如何在 Linux 中使用 sort 命令对文本文件进行排序

Linux 为您提供了几个可用于处理文本文件的实用程序。 无论您想删除重复数据还是对文件中的内容进行排序,Linux 命令行工具都能满足您的需求。

本文将演示 sort 命令以及如何使用它对文本文件中的内容进行排序并进行相应的排列。

什么是排序命令?

如上所述,排序命令帮助用户以特定顺序排列文本文件的内容。 有几个选项可让您根据自己的意愿对文件进行排序。 它是一个标准的 Linux 程序,可以按字母顺序、数字顺序、按列等,以正常或相反的顺序对文本文件进行排序。

该命令的其他功能包括在排序时忽略字符大小写、按月对文件进行排序、忽略文件中的空白以及随机排序。 使用排序,您还可以检查文件是否已经排序。

如何在 Linux 中使用排序

尽管 sort 包含几个可以使用的方法和标志,但它仍然很容易学习。

基本语法

使用排序的基本语法是:

sort filename

…在哪里 文件名 是要排序的文本文件的绝对或相对路径。

默认情况下,sort 将按照以下标准排列内容:

  1. 以数字字符开头的行具有最高优先级。
  2. 在对以数字开头的行进行排序之后,该命令将按字母顺序对行进行排序。
  3. 以小写字符开头的行位于以相同大写字符开头的行之前。

考虑一个名为 文本文件.txt 包含以下信息:

使用默认配置对文件进行排序:

sort textfile.txt

输出:

创建一个新的输出文件

sort 命令不会修改文件的内容。 它只是将排序后的内容发送到标准输出。 但是,这并不意味着 sort 不能创建新文件。 您可以使用 -o flag 指定排序文件的名称,sort 将自动为您创建文件并添加内容。

sort -o sortedfile filename

…在哪里 排序文件 是输出文件的名称和 文件名 是需要排序的原始文件。

排序 文本文件.txt 并为内容创建一个新的输出文件:

sort -o sorted.txt textfile.txt

输出:

对多个文件进行排序

要一次排序多个文件,只需传递用分隔符分隔的文件名 空间 特点。

sort textfile.txt textfile2.txt

输出:

请注意,排序将合并文件的输出并将它们一起显示在终端中。

反向排序文件

如果要反转内容的排列,请使用 -r 使用默认命令标记。 这 -r 在以下命令中代表 逆转.

sort -r textfile.txt

输出:

对文件进行数字排序

要对包含数字数据的文件进行排序,请使用 -n 用命令标记。 默认情况下,sort 会按升序排列数据。

sort -n numbers.txt

输出:

如果要按降序排序,请使用 -r 选项连同 -n 命令中的标志。

sort -rn numbers.txt

输出:

排序时忽略字符大小写

默认情况下,排序会考虑内容的字符大小写。 以小写字符开头的行位于以相同字符的大写版本开头的行之前。 为了 example,“他是男孩”将在“他是男孩”之前。

如果要排序忽略字符大小写,请指定 -F 或者 –忽略大小写 标志如下:

sort -f textfile.txt
sort --ignore-case textfile.txt

输出:

根据月份对文件进行排序

使用 -M 标志,您可以根据月份名称修改文件内容的顺序。

sort -M textfile2.txt

输出:

忽略前导空格

有时,您要排序的文件可能包含空格或制表符。 要忽略此类空白字符,请使用 -b 旗帜。

sort -b fileblanks.txt

输出:

根据列对文件进行排序

如果您有一个文本文件,其中的数据排列在不同的列中,您可以根据列的内容对文件进行排序。 您需要做的就是将列号与 -k 旗帜。

考虑一个包含具有不同列的文件信息的文本文件。 对名为的文件进行排序 输出.txt 根据第八栏:

sort -k8 -rn output.txt

输出:

使用其他命令进行管道排序

您甚至可以将 sort 与其他 Linux 命令一起使用来修改输出的排列。 为了 example根据文件的大小对 ls 命令的输出进行排序:

ls -la | sort -k5 -rn

输出:

随机排序文件

您可以使用 -R 如果要随机化文本文件中行的顺序,请标记。 考虑文件 文本文件.txt

sort -R textfile.txt

输出:

对文件中的版本号进行排序

如果你有一个包含与包相关的版本信息的文本文件,你可以使用 -V 或者 –版本排序 旗帜。

sort -V version.txt
sort --version-sort version.txt

输出:

检查文件是否已排序

-C 标志将帮助您识别已根据指定选项排序的文件。 如果文件的内容正确排序,sort 将不会显示任何输出。

检查文件是否 文本文件.txt 排序:

sort -c textfile.txt

现在,让我们对文件进行排序并将其输出保存到一个名为 排序的.txt. 在发出以下命令时:

sort -c sorted.txt

输出:

您还可以指定各种标志以根据特定标准检查文件的排列。 为了 example检查文件是否 数字.txt 降序排列:

sort -c -rn numbers.txt

您将看到一个输出说明文件未正确排序。 让我们对文件进行排序并检查新文件是否通过测试。

sort -o sorted.txt -rn numbers.txt
sort -c -rn sorted.txt

输出:

对文件进行排序并删除重复项

您正在使用的文件可能包含重复数据。 尽管您可以使用 uniq 命令从文件中删除此类信息,但 sort 可以为您执行此任务。 这 -u 或者 – 独特 标志是你需要的。

考虑一个名为 重复的.txt

要对文件进行排序并删除重复数据:

sort -u duplicate.txt

输出:

你可以看到,当你使用 -u 标志,排序仅显示不同的行并根据指定的条件排列它们。

在 Linux 中使用文本文件

尽管命令行文本编辑器的功能无与伦比,但您仍然可以选择 gedit 等图形编辑器来轻松修改文本文件的内容。 此外,对于那些刚接触 Linux 并且无法处理终端的人来说,它是一个更好的选择。

从命令行和 Linux 开始的最佳方式是首先练习基本命令。 在介绍了基本实用程序之后,逐渐向更复杂的命令前进可能是最好的方法。