在我们上一篇文章中,我们介绍了各种“sort”命令的示例。如果你错过了,可以点击下面的链接进行补回。在本文中,我们将从上一篇文章结束的地方继续,介绍该命令的其余方面。这样,两篇文章结合起来将成为Linux“sort”命令的全面指南。
在我们继续之前,请创建一个名为“month.txt”的文本文件,并将下面提供的数据填入其中。
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15. 按月份排序文件内容
以下命令根据月份缩写或名称按时间顺序对文件“month.txt”的内容进行排序,使用“'-M'
”选项指示“sort”命令将数据视为日期并相应地排序。
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. 當文件中不使用空格作為分隔符時處理分隔符
如果單詞之間的分隔符(分隔符)是空格,則‘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
第二個是根據第四個非數字字段進行排序。
如果分隔符是Tab,則您可以在上述示例中使用$'\t'
代替'+'
。
19. 根据文件大小随机排序输出
根据第五列(代表“数据量”)随机对您的主目录的ls -l 命令输出进行排序。
ls -l /home/avi/ | sort -k5 -R
每次运行上述脚本时,您可能会得到不同的结果,因为结果是随机生成的。
正如上一篇文章中的规则号码 – 2所清楚的那样,sort命令更喜欢以小写字符开头的行而不是以大写字符开头的行。还请查看上一篇文章中的示例 3,其中字符串‘laptop’出现在字符串‘LAPTOP’之前。
20. 覆盖默认排序首选项
如何覆盖默认排序首选项?在我们可以覆盖默认排序首选项之前,我们需要将环境变量'LC_ALL'
导出为'C'
。
要执行此操作,请在命令行提示符下运行以下代码。
export LC_ALL=C
然后,使用‘tecmint.txt’文本文件覆盖默认排序首选项进行排序。
$ sort tecmint.txt
不要忘记将输出与您在示例 3中获得的输出进行比较,您还可以使用选项‘-f
’(又名‘--ignore-case
’)以获得更有组织的输出。
$ 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”命令的各個方面。我們從按字母順序進行基本排序開始,涉足了數字和日期排序,甚至觸及了自定義分隔符。我們還學會了如何覆蓋默認的排序偏好以適應我們的需求。
此外,我們討論了檢查文件是否已經排序以及將“sort”操作組合為多個輸入文件的技術。通過在這裡獲得的知識,您在Linux環境中擁有了一個強大的工具,可以高效地對數據進行排序和組織。
我們希望本文對您的命令行努力有所啟發和有用。繼續探索、學習和掌握“sort”的藝術,以提高您的Linux技能。
Source:
https://www.tecmint.com/linux-sort-command-examples/