Linux uniq命令

pursuer.chen發表於2016-05-23

介紹

uniq命令是一個文字去重命令,它能對標準輸入和文字檔案進行去重操作,並且能將結果通過stdout輸出,uniq命令經常會同sort命令一起使用,uniq命令預設對多條重複的行只顯示一行。

 

引數

  -c, --count           在每行記錄前顯示該行內容的數量
  -d, --repeated        僅顯示重複的記錄行,並且去重
-D, --all-repeated[=delimit-method] 僅顯示重複的行,並不去重
-f, --skip-fields=N avoid comparing the first N fields -i, --ignore-case 去重顯示,uniq的預設引數
-s, --skip-chars=N 指定忽略行的前N個字元 -u, --unique 僅顯示非重複的行
-z, --zero-terminated 末尾生成0個位元組的終止符作為輸出(\0),這樣的目的就是避免一條記錄行因為存在空格被識別為多行
-w, --check-chars=N 只對比指定的N個字元,預設是從開始算起,如果和-s一起使用那麼要排除-s指定的字元數

測試資料

 

1.顯示行的數量

2.只顯示重複的行

 

3.僅顯示非重複的行

4.-s和-w

-s 2:忽略前兩個字元,即從第二列開始比較

-w 2:只比較兩個字元,即只比較第二列的前兩個字元

所以,ja、fe、ma個取了重複的第一條記錄行

5.生成0個位元組的終止符,\0

例如:當文字中的行記錄是以空格分隔,並且需要將標準輸出傳給xargs,由於xargs是以空格作為分隔符,但是實際需要將整個文字內容作為一個完整的輸出,這個時候就需要使用-z引數在文字末尾生成\0的終止符告訴程式整個文字作為一個整體,

[root@localhost test]# cat test
a b 
c d
[root@localhost test]# uniq  test |xargs 
a b c d

 

注意:結果並不是我們要的結果,這時就需要文字的末尾生成\0的分隔符作為行的行的結束標示

[root@localhost test]# uniq -z test |xargs -0
a b
c d 

使用了-z引數之後就將整個文字作為一個整體在末尾生成一個\0的分隔符

總結

 

 

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章