歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux Sort命令的14個有用的范例(一)

Linux Sort命令的14個有用的范例(一)

日期:2017/2/28 14:01:57   编辑:Linux教程

Sort是用於對單個或多個文本文件內容進行排序的Linux程序。Sort命令以空格作為字段分隔符,將一行分割為多個關鍵字對文件進行排序。需要注意的是除非你將輸出重定向到文件中,否則Sort命令並不對文件內容進行實際的排序(即文件內容沒有修改),只是將文件內容按有序輸出。

本文的目標是通過14個實際的范例讓你更深刻的理解如何在Linux中使用sort命令。

1、 首先我們將會創建一個用於執行‘sort’命令的文本文件(tecmint.txt)。工作路徑是‘/home/$USER/Desktop/tecmint’。

下面命令中的‘-e’選項將啟用‘\’轉義,將‘\n’解析成換行

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

2、 在開始學習‘sort’命令前,我們先看看文件的內容及其顯示方式。

  1. $ cat tecmint.txt

3、 現在,使用如下命令對文件內容進行排序。

  1. $ sort tecmint.txt

注意:上面的命令並不對文件內容進行實際的排序,僅僅是將其內容按有序方式輸出。

4、 對文件‘tecmint.txt’文件內容排序,並將排序後的內容輸出到名為sorted.txt的文件中,然後使用cat命令查看驗證sorted.txt文件的內容。

  1. $ sort tecmint.txt > sorted.txt
  2. $ cat sorted.txt

5、 現在使用‘-r’參數對‘tecmint.txt’文件內容進行逆序排序,並將輸出內容重定向到‘reversesorted.txt’文件中,並使用cat命令查看文件的內容。

  1. $ sort -r tecmint.txt > reversesorted.txt
  2. $ cat reversesorted.txt

6、 創建一個新文件(lsl.txt),文件內容為在home目錄下執行‘ls -l’命令的輸出。

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

我們將會看到對其他字段進行排序的例子,而不是對默認的開始字符進行排序。

7、 基於第二列(符號連接的數量)對文件‘lsl.txt’進行排序。

  1. $ sort -nk2 lsl.txt

注意:上面例子中的‘-n’參數表示對數值內容進行排序。當想基於文件中的數值列對文件進行排序時,必須要使用‘-n’參數。

8、 基於第9列(文件和目錄的名稱,非數值)對文件‘lsl.txt’進行排序。

  1. $ sort -k9 lsl.txt

9、 sort命令並非僅能對文件進行排序,我們還可以通過管道將命令的輸出內容重定向到sort命令中。

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

10、 對文件tecmint.txt進行排序,並刪除重復的行。然後檢查重復的行是否已經刪除了。

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

目前我們發現的排序規則:

除非指定了‘-r’參數,否則排序的優先級按下面規則排序

  • 以數字開頭的行優先級最高
  • 以小寫字母開頭的行優先級次之
  • 待排序內容按字典序進行排序
  • 默認情況下,‘sort’命令將帶排序內容的每行關鍵字當作一個字符串進行字典序排序(數字優先級最高,參看規則 1)

11、 在當前位置創建第三個文件‘lsla.txt’,其內容用‘ls -lA’命令的輸出內容填充。

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

了解ls命令的讀者都知道‘ls -lA’ 等於 ‘ls -l’ + 隱藏文件,所以這兩個文件的大部分內容都是相同的。

12、 對上面兩個文件內容進行排序輸出。

  1. $ sort lsl.txt lsla.txt

注意文件和目錄的重復

13、 現在我們看看怎樣對兩個文件進行排序、合並,並且刪除重復行。

  1. $ sort -u lsl.txt lsla.txt

此時,我們注意到重復的行已經被刪除了,我們可以將輸出內容重定向到文件中。

14、 我們同樣可以基於多列對文件內容進行排序。基於第2,5(數值)和9(非數值)列對‘ls -l’命令的輸出進行排序。

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

先到此為止了,在接下來的文章中我們將會學習到‘sort’命令更多的詳細例子。屆時敬請關注我們。保持分享精神。若喜歡本文,敬請將本文分享給你的朋友。

Copyright © Linux教程網 All Rights Reserved