在上一篇文章中,小编介绍了“ sort ”命令的各种典型示例。如果错过了,可以通过以下链接进行补看。在本文中,小编将从上一篇文章中停止的地方继续,介绍该命令的其它示例。这样,两篇文章将一起作为Linux“ sort ”命令的新手综合指南。
在继续之前,请创建一个名为“ month.txt ”的文本文件并使用下面提供的数据填充:
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15、按月份对文件内容进行排序
以下命令使用'-M'
选项指示“ sort ”命令将数据视为日期并相应地排序,根据月份缩写或名称按时间顺序对文件“ month.txt ”的内容进行排序:
sort -M month.txt
16、按人类可读格式的文件大小对输出进行排序
以下命令结合了“ ls ”和“ sort ”命令来执行两项任务。首先,它以长格式列出用户主目录的内容,然后将此目录列表通过管道传递给“sort”命令,以人类可读的格式输出文件大小,从而更容易识别目录中最大和最小的文件。
ls -l /home/$USER | sort -h -k5
17、检查排序文件的一致性
在上一篇文章中,我们生成了两个文本文件:示例4中的“ sorted.txt ”和示例6中的“ lsl.txt ”。其中“ sorted.txt ”已经排序,而“ lsl.txt ”没有。 为了验证两个文件的排序状态,将使用“ sort ”命令,这将允许我们确认“ sorted.txt ”是否保持正确的顺序以及“ lsl.txt ”是否需要排序:
sort -c sorted.txt
如果返回0,则表示文件已排序且不存在冲突:
sort -c lsl.txt
18、在文件中不使用空格时处理分隔符
如果单词之间的分隔符( separator ) 是空格,则“ sort ”命令会自动将水平空格之后的任何内容解释为新单词。但是当分隔符不是空格时会发生什么?
考虑一个文本文件,其内容由空格以外的任何内容分隔,例如'|'
或 '\'
或'+'
或 '.'
或...</code.
创建一个文本文件,其中内容以+
分隔。使用cat命令检查文件的内容:
echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt
现在根据第一个数字字段对该文件进行排序:
sort -t '+' -nk1 delimiter.txt
接下来基于第四个非数字字段排序,结果如下所示:
如果分隔符是制表符,你可以使用$'\t'
代替'+'
,如上面的示例所示。
19、按文件大小随机排序输出
根据表示“数据量”的第五列,以随机顺序对主目录的ls -l命令的输出进行排序:
ls -l /home/avi/ | sort -k5 -R
每次运行上面的脚本时,可能会得到不同的结果,因为结果是随机生成的。
从上一篇文章的规则号–2可以清楚地看出,排序命令更喜欢以小写字符开头的行,而不是大写字符开头的行。另请查看上一篇文章中的示例3 ,其中字符串“ laptop ”出现在字符串“ LAPTOP ”之前。
20、覆盖默认排序首选项
如何覆盖默认排序首选项?在覆盖默认排序首选项之前,需要将环境变量导出'LC_ALL'
到'C'
。为此,请在命令行提示符下运行以下代码:
export LC_ALL=C
然后对文本文件“ tecmint.txt ”进行排序,覆盖默认排序首选项:
$ sort tecmint.txt
不要忘记将输出与示例3中实现的输出进行比较,并且你还可以使用 ‘ -f
‘ 选项来获得组织良好的输出:
$ sort -f tecmint.txt
21、在单个操作中组合两个输入文件
对两个输入文件运行“sort”并一次性将它们连接起来怎么样?
让我们创建两个文本文件,即“ file1.txt ”和“ file2.txt ”,并用一些数据填充它们。在“ file1.txt ”中,将添加数字,如下所示。此外,还将使用cat命令来检查文件内容:
echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt cat file1.txt
并用一些数据填充第二个文件“ file2.txt ”:
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
现在对两个文件的输出进行排序并连接。
join <(sort -n file1.txt) <(sort file2.txt)
总结
总之,本文探讨了Linux 中“ sort ”命令的各个方面,从按字母顺序进行基本排序开始,开始尝试基于数字和日期的排序,甚至还涉及自定义分隔符。我们还学习了如何覆盖默认排序首选项以满足我们的需求。
此外,小编还介绍了检查文件是否已排序以及组合多个输入文件的“排序”操作的技术。借助此处获得的知识,你将拥有一个强大的工具,可以在 Linux 环境中有效地排序和组织数据。