sort及uniq命令使用

2021-06-07 20:34:40 字數 2623 閱讀 6317

sort命令

sort命令的功能是對檔案中的各行進行排序。sort命令有許多非常實用的選項,這些選項最初是用來對資料庫格式的檔案內容進行各種排序操作的。實際上,sort命令可以被認為是乙個非常強大的資料治理工具,用來治理內容類似資料庫記錄的檔案。

sort命令將逐行對檔案中的內容進行排序,假如兩行的首字元相同,該命令將繼續比較這兩行的下一字元,假如還相同,將繼續進行比較。

語法:sort [選項] 檔案

說明:sort命令對指定檔案中所有的行進行排序,並將結果顯示在標準輸出上。如不指定輸入檔案或使用「- 」,則表示排序內容來自標準輸入。

sort排序是根據從輸入行抽取的乙個或多個要害字進行比較來完成的。排序要害字定義了用來排序的最小的字串行。預設情況下以整行為要害字按ascii字元順序進行排序。

改變預設設定的選項主要有:

- m 若給定檔案已排好序,合併檔案。

- c 檢查給定檔案是否已排好序,假如它們沒有都排好序,則列印乙個出錯資訊,並以狀態值1退出。

- u 對排序後認為相同的行只留其中一行。

- o 輸出檔案 將排序輸出寫到輸出檔案中而不是標準輸出,假如輸出檔案是輸入檔案之一,sort先將該檔案的內容寫入乙個臨時檔案,然後再排序和寫輸出結果。

改變預設排序規則的選項主要有:

- d 按字典順序排序,比較時僅字母、數字、空格和製表符有意義。

- f 將小寫字母與大寫字母同等對待。

- i 忽略非列印字元。

- m 作為月份比較:「jan」<「feb」<¼ <「dec」。

- r 按逆序輸出排序結果。

+posl - pos2 指定乙個或幾個字段作為排序要害字,字段位置從posl開始,到pos2為止(包括posl,不包括pos2)。如不指定pos2,則要害字為從posl到行尾。欄位和字元的位置從0開始。

- b 在每行中尋找排序要害字時忽略前導的空白(空格和製表符)。

- t separator 指定字元separator作為字段分隔符。

下面通過幾個例子來講述sort的使用。

用sort命令對text檔案中各行排序後輸出其結果。請注重,在原檔案的第

二、三行上的第乙個單詞完全相同,該命令將從它們的第二個單詞vegetables與fruit的首字元處繼續進行比較。

$ cat text

vegetable soup

fresh vegetables

fresh fruit

lowfat milk

$ sort text

fresh fruit

fresh vegetables

lowfat milk

vegetable soup

使用者可以儲存排序後的檔案內容,或把排序後的檔案內容輸出至印表機。下例中使用者把排序後的檔案內容儲存到名為result的檔案中。

$ sort text>result

以第2個字段作為排序要害字對檔案example的內容進行排序。

$ sort 1-2 example

對於file1和file2檔案內容反向排序,結果放在outfile中,利用第2個字段的第乙個字元作為排序要害字。

$ sort -r -o outfile 1.0 -1.1 example

sort排序常用於在管道中與其他命令連用,組合完成比較複雜的功能,如利用管道將當前工作目錄中的檔案送給sort進行排序,排序要害字是第6個至第8個字段。

$ ls - l | sort 5 - 7

sort命令也可以對標準輸入進行操作。例如,假如您想把幾個檔案文字行合併,並對合併後的文字行進行排序,您可以首先用命令cat把多個檔案合併,然後用管道操作把合併後的文字行輸入給命令sort,sort命令將輸出這些合併及排序後的文字行。在下面的例子中,檔案veglist與檔案 fruitlist的文字行經過合併與排序後被儲存到檔案clist中。

$ cat veglist fruitlist | sort > clist

uniq命令

檔案經過處理後在它的輸出檔案中可能會出現重複的行。例如,使用cat命令將兩個檔案合併後,再使用sort命令進行排序,就可能出現重複行。這時可以使用uniq命令將這些重複行從輸出檔案中刪除,只留下每條記錄的唯一樣本。

語法:uniq [選項] 檔案

說明:這個命令讀取輸入檔案,並比較相鄰的行。在正常情況下,第二個及以後更多個重複行將被刪去,行比較是根據所用字符集的排序序列進行的。該命令加工後的結果寫到輸出檔案中。輸入檔案和輸出檔案必須不同。假如輸入檔案用「- 」表示,則從標準輸入讀取。

該命令各選項含義如下:、

- c 顯示輸出中,在每行行首加上本行在檔案中出現的次數。它可取代- u和- d選項。

- d 只顯示重複行。

- u 只顯示檔案中不重複的各行。

- n 前n個字段與每個欄位前的空白一起被忽略。乙個欄位是乙個非空格、非製表符的字串,彼此由製表符和空格隔開(欄位從0開始編號)。

n 前n個字元被忽略,之前的字元被跳過(字元從0開始編號)。

- f n 與- n相同,這裡n是字段數。

- s n 與+n相同,這裡n是字元數。

例如:1. 顯示檔案example中不重複的行。

uniq - u example

2. 顯示檔案example中不重複的行,從第2個字段的第2個字元開始做比較。

uniq - u - 1 1 example

sort命令以及uniq命令

sort 用於排序文字資料。該資料可以位於檔案中或其他命令輸出中。sort 通常與管道一起使用 sort n 純數字排序 u 去冗餘 uniq c 去除冗餘並統計冗餘次數 t 指定分隔符 k 指定列 root localhost cat aaa file1 2313 434325 324325325...

linux的uniq和sort命令使用

環境 centos 1 uniq命令解析 root deam uniq cat file.txt 原檔案 123123 134456 123 root deam uniq uniq file.txt 刪除所有連續的重複行,只顯示唯一的行。123134 456123 root deam uniq so...

Sort命令,Uniq命令和tr命令

sort命令 以行為單位對檔案內容進行排序,也可以根據不同的資料型別來排序 語法格式 sort 選項 引數 cat file sort 選項 常用選項 f 忽略大小寫 b 忽略每行前面的空格 m 按照三字元月份進行排序 n 按照數字進行排序 r 反向排序 u 等同於uniq,表示相同的資料顯示一行 ...