网站搜索

Linux“排序”命令的 14 个有用示例 - 第 1 部分


“sort”命令是一个 Linux 程序,用于打印输入文本文件的行并按排序顺序连接所有文件。排序命令将空格作为字段分隔符,将整个输入文件作为排序键。值得注意的是,sort 命令实际上并不对文件进行排序,而只是打印排序后的输出,直到您重定向输出。

本文旨在深入了解 Linux 的“sort”命令,并通过 14 个实用示例向您展示如何在 Linux 中使用 sort 命令。

1. 创建指定内容的文本文件

首先,我们将创建一个名为“howtoing.txt”的文本文件,该文件将用于在我们的工作目录中执行“sort”命令示例,该任务是“ /home/$USER/Desktop/howtoing'。

下面命令中的选项“-e”启用反斜杠的解释,而/n告诉echo命令将每个字符串写入新行。

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2.查看文件内容

在开始使用“sort”命令之前,让我们使用以下 cat 命令看一下文件的内容以及它的显示方式。

cat tecmint.txt

3. 文件内容排序

命令“sort howtoing.txt”用于按字母升序重新排列文件中的行,如果有任何重复行,它将为每个唯一行保留一份副本。

sort tecmint.txt

注意:以上命令不会对文本文件的内容进行排序,而仅在终端上显示排序后的输出。

4. 将排序后的输出重定向到新文件

以下命令用于按字母顺序对文本文件“howtoing.txt”的行进行排序,然后将排序后的输出重定向到名为“sorted.txt”的新文件”,表示原文件保持不变,排序后的内容存储在单独的文件中。

要验证内容,请使用 cat 命令。

sort tecmint.txt > sorted.txt
cat sorted.txt

5. 文件内容逆序排序

以下命令用于以相反的顺序对文本文件“howtoing.txt”的行进行排序,这意味着它将按字母降序排列行,然后将排序后的输出重定向到新的文件名为“reversesorted.txt

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. 保存文件和目录列表

以下命令用于使用 ls 命令以详细的长格式视图列出用户主目录(“/home/$USER”)的内容,然后将此目录列表重定向到名为“lsl.txt”的文本文件,位于用户桌面上,特别是“howtoing”目录中。

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

现在,我们将探讨基于默认初始字符以外的字段对内容进行排序的示例。

7. 根据第二个字段对‘文件内容’进行排序

以下命令用于根据每行第二个字段中的值对文件“lsl.txt”的内容进行排序。 '-n' 选项表示数字排序,将第二个字段视为数字而不是文本。

'-k2' 选项指定我们要根据第二个字段进行排序。通过执行此命令,您将获得“lsl.txt”中行的排序列表,排序标准是每行第二个字段中的数值。

sort -nk2 lsl.txt

8. 根据第九个字段对文件内容进行排序

以下命令用于根据每行第九个字段中的值按升序对文件“lsl.txt”中的行进行排序。 '-k9' 选项指定应根据第九个字段进行排序。

sort -k9 lsl.txt

9.按文件大小对文件进行排序

以下命令结合了“ls”和“sort”命令,以长列表格式列出用户主目录的内容,然后将目录列表通过管道传输到 'sort -nk5',根据第五列中的值(代表文件大小)对列表进行排序。

ls -l /home/$USER | sort -nk5

10. 删除文件中的重复行

以下命令按字母升序对文件“howtoing.txt”中的行进行排序,并使用 '-u' 选项(代表“unique”,它确保在排序的输出中保留唯一的行。

cat tecmint.txt
sort -u tecmint.txt

到目前为止的规则(我们观察到的):

  • 以数字开头的行在列表中是首选,并且位于顶部,除非另有指定 (-r)。
  • 列表中首选以小写字母开头的行,并且位于顶部,除非另有指定 (-r)。
  • 内容根据字典中字母表的出现情况列出,除非另有说明 (-r)。
  • 默认情况下,排序命令将每一行视为一个字符串,然后根据字典中字母表的出现情况对其进行排序(首选数字;请参阅规则 - 1),除非另有指定。

11. 将目录列表重定向到文件

以下命令以长格式列出用户主目录的内容,包括隐藏文件和目录,然后将目录列表重定向到位于用户桌面上的名为“lsla.txt”的文本文件“howtoing”目录。

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

熟悉 ls 命令的人都知道,'ls -lA' 相当于 'ls -l' 加上隐藏文件。因此,这两个命令中的大部分内容将是相同的。

12. 文件内容排序

以下命令按字母升序对两个文本文件“lsl.txt”和“lsla.txt”的内容进行排序,然后将排序后的内容合并并显示在终点站。

sort lsl.txt lsla.txt

注意文件和文件夹的重复。

13. 删除文件中的重复行

以下命令将两个文本文件“lsl.txt”和“lsla.txt”的内容合并并按字母升序排序,同时使用'-u' 选项,确保在排序的输出中保留唯一的行。

sort -u lsl.txt lsla.txt

请注意,输出中已省略重复项。此外,您可以通过重定向将输出保存到新文件。

14. 使用自定义分隔符按多个字段对输出进行排序

以下命令结合了“ls”和“sort”命令,以长格式列出用户主目录的内容,然后将目录列表通过管道传输到“< Strong>sort' 命令,根据特定的列和字段对输出进行排序。

ls -l /home/$USER | sort -t "," -nk2,5 -k9

以下是该命令的详细说明:

  • -t "," – 指定使用逗号 (",") 作为字段分隔符。
  • -nk2,5 – 表示按第 2 至 5 列中的数值排序,通常表示权限和所有权详细信息。
  • -k9 – 根据第九列(表示文件大小)进一步对结果进行排序。

目前为止就这样了。在下一篇文章中,我们将为您深入研究排序命令的更详细示例。

请继续分享、评论、点赞,帮助我们接触到更广泛的受众。