天天看點

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort是用于對單個或多個文本檔案内容進行排序的linux程式。sort指令以空格作為字段分隔符,将一行分割為多個關鍵字對檔案進行排序。需要注意的是除非你将輸出重定向到檔案中,否則sort指令并不對檔案内容進行實際的排序(即檔案内容沒有修改),隻是将檔案内容按有序輸出。

本文的目标是通過14個實際的範例讓你更深刻的了解如何在linux中使用sort指令。

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

1、 首先我們将會建立一個用于執行‘sort’指令的文本檔案(tecmint.txt)。工作路徑是‘/home/$user/desktop/tecmint’。

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

<code>$ echo -e "computer\nmouse\nlaptop\ndata\nredhat\nlaptop\ndebian\nlaptop" &gt; tecmint.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

split string by lines in linux

2、 在開始學習‘sort’指令前,我們先看看檔案的内容及其顯示方式。

<code>$ cat tecmint.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

check content of file

3、 現在,使用如下指令對檔案内容進行排序。

<code>$ sort tecmint.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content of file linux

注意:上面的指令并不對檔案内容進行實際的排序,僅僅是将其内容按有序方式輸出。

<code>$ sort tecmint.txt &gt; sorted.txt</code>

<code>$ cat sorted.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort file content in linux

5、 現在使用‘-r’參數對‘tecmint.txt’檔案内容進行逆序排序,并将輸出内容重定向到‘reversesorted.txt’檔案中,并使用cat指令檢視檔案的内容。

<code>$ sort -r tecmint.txt &gt; reversesorted.txt</code>

<code>$ cat reversesorted.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content by reverse

6、 建立一個新檔案(lsl.txt),檔案内容為在home目錄下執行‘ls -l’指令的輸出。

<code>$ ls -l /home/$user &gt; /home/$user/desktop/tecmint/lsl.txt</code>

<code>$ cat lsl.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

populate output of home directory

我們将會看到對其他字段進行排序的例子,而不是對預設的開始字元進行排序。

7、 基于第二列(符号連接配接的數量)對檔案‘lsl.txt’進行排序。

<code>$ sort -nk2 lsl.txt</code>

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

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content by column

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

<code>$ sort -k9 lsl.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content based on column

9、 sort指令并非僅能對檔案進行排序,我們還可以通過管道将指令的輸出内容重定向到sort指令中。

<code>$ ls -l /home/$user | sort -nk5</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content using pipe option

10、 對檔案tecmint.txt進行排序,并删除重複的行。然後檢查重複的行是否已經删除了。

<code>$ sort -u tecmint.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort and remove duplicates

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

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

以數字開頭的行優先級最高

以小寫字母開頭的行優先級次之

待排序内容按字典序進行排序

預設情況下,‘sort’指令将帶排序内容的每行關鍵字當作一個字元串進行字典序排序(數字優先級最高,參看規則 1)

11、 在目前位置建立第三個檔案‘lsla.txt’,其内容用‘ls -la’指令的輸出内容填充。

<code>$ ls -la /home/$user &gt; /home/$user/desktop/tecmint/lsla.txt</code>

<code>$ cat lsla.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

populate output with hidden files

了解ls指令的讀者都知道‘ls -la’ 等于 ‘ls -l’ + 隐藏檔案,是以這兩個檔案的大部分内容都是相同的。

12、 對上面兩個檔案内容進行排序輸出。

<code>$ sort lsl.txt lsla.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort contents of two files

注意檔案和目錄的重複

13、 現在我們看看怎樣對兩個檔案進行排序、合并,并且删除重複行。

<code>$ sort -u lsl.txt lsla.txt</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort, merge and remove duplicates from file

此時,我們注意到重複的行已經被删除了,我們可以将輸出内容重定向到檔案中。

14、 我們同樣可以基于多列對檔案内容進行排序。基于第2,5(數值)和9(非數值)列對‘ls -l’指令的輸出進行排序。

<code>$ ls -l /home/$user | sort -t "," -nk2,5 -k9</code>

Linux 的 ‘sort’指令的14個有用的範例(一)Linux 的 ‘sort’指令的14個有用的範例(一)

sort content by field column

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

原文釋出時間:2015-05-02

本文來自雲栖合作夥伴“linux中國”

繼續閱讀