收集云服务器优惠信息
记录云服务器使用心得

Linux基础知识:14个“Sort”排序命令典型示例详解

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

在本文中,小编主要帮助大家深入了解Linux的“sort ”命令,通过14个有用的典型示例向你展示如何在Linux系统中使用sort命令。

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

首先,创建一个名为“ tecmint.txt”文本文件,该文件将用于在目录“ /home/$USER/Desktop/tecmint ”执行“ sort ”命令示例。

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

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

2、查看文件内容

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

cat tecmint.txt

查看文件内容

3、文件内容排序

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

sort tecmint.txt

文件内容排序

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

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

以下命令用于按字母顺序对文本文件“ tecmint.txt”的行进行排序,然后将排序后的输出重定向到名为“ sorted.txt ”的新文件,这意味着原始文件保持不变,而排序后的文件内容存储在单独的文件中。要验证内容,请使用cat命令:

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

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

5、文件内容逆序排序

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

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

文件内容逆序排序

6、保存文件和目录列表

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

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、删除文件中的重复行

以下命令按字母升序对文件“ tecmint.txt”中的行进行排序,并使用代表“ unique ”的'-u' 选项删除任何重复的行,并确保在排序的输出中保留唯一的行:

$ cat tecmint.txt
$ sort -u tecmint.txt

删除文件中的重复行

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

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

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

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

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt
将目录列表重定向到文件

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 ”命令,以长格式列出用户主目录的内容,然后将目录列表通过管道传递给“ sort ”命令,该命令根据特定的列和字段对输出进行排序。

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

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

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

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

总结

以上只是 sort 命令的一些基本用法,还有其它一些选项和功能,具体可以通过 man sort 命令来查看完整的文档和更多详细信息。

众所周知,sort 命令是一个用于对文本文件内容进行排序的 Unix/Linux 命令。它默认按照字典序(词典序)对文本行进行排序,但也可以按照数字、日期等方式排序。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《Linux基础知识:14个“Sort”排序命令典型示例详解》
文章链接:https://www.ecscoupon.com/3094.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!