當前位置:才華齋>計算機>作業系統>

Linux常用命令之文字處理

作業系統 閱讀(2.5W)
  Linux常用命令之文字處理

uniq [選項] 檔案

Linux常用命令之文字處理

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

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

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

– d 只顯示重複行。

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

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

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

– f n 與- n相同,這裡n是欄位數。

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

接下來通過實踐例項說明:

程式碼如下:

[root@stu100 ~]# cat test

boy took bat home

boy took bat home

girl took bat home

boy took bat home

boy took bat home

dog brought hat home

dog brought hat home

dog brought hat home

看test檔案的內容

程式碼如下:

[root@stu100 ~]# uniq test

boy took bat home

girl took bat home

boy took bat home

dog brought hat home

uniq命令不加任何引數,僅顯示連續重複的行一次

程式碼如下:

[root@stu100 ~]# uniq -c test

2 boy took bat home

1 girl took bat home

2 boy took bat home

3 dog brought hat home

1

-c 引數顯示檔案中每行連續出現的次數。

程式碼如下:

[root@stu100 ~]# cat test |sort | uniq -c

1

4 boy took bat home

3 dog brought hat home

1 girl took bat home

排序後再顯示

程式碼如下:

[root@stu100 ~]# uniq -d test

boy took bat home

boy took bat home

dog brought hat home

-d選項僅顯示檔案中連續重複出現的行。

程式碼如下:

[root@stu100 ~]# uniq -u test

girl took bat home

-u選項顯示檔案中沒有連續出現的行。

程式碼如下:

[root@stu100 ~]# uniq -f 2 -s 2 test

boy took bat home

忽略每行的前2個欄位,忽略第二 個空白字元和第三個欄位的首字元,結果at home

程式碼如下:

[root@stu100 ~]# uniq -f 1 test

boy took bat home

dog brought hat home

忽 略每行的第一個欄位,這樣boy ,girl開頭的行看起來是連續重複的行。

程式碼如下:

[root@stu100 ~]# uniq -D test

boy took bat home

boy took bat home

boy took bat home

boy took bat home

dog brought hat home

dog brought hat home

dog brought hat home

顯示所有重複的行,每個重複的行都顯示

當你有一個包含相同條目的僱員(employee)的檔案,你可以以如下方式來刪除相同的條目

程式碼如下:

$ sort | uniq

$ sort –u

如果你想知道有多少行是相同的,可以像下面這個做。以下例子中的第一列顯示該行的重複數量。在本例中,以Alex和Emma開頭的行,在檔案中有兩個重複行。

程式碼如下:

$ sort | uniq –c

2 Alex Jason:200:Sales

2 Emma Thomas:100:Marketing

1 Madison Randy:300:Product Development

1 Nisha Singh:500:Sales

1 Sanjay Gupta:400:Support

3. 以下命令僅僅列出了相同的條目

程式碼如下:

$ sort | uniq –cd

2 Alex Jason:200:Sales

2 Emma Thomas:100:Marketing