Skip to main content

Unix/Linux 的 uniq 指令使用

uniq 以行為單位找出相鄰的重複行,因為只比較相鄰行所以常搭配 sort 使用。

uniq 的語法如下

SYNOPSIS
uniq [OPTION]... [INPUT [OUTPUT]]

INPUT 是輸入檔案,不指定時讀取標準輸入;OUTPUT 是輸出檔案,預設輸出到標準輸出。

資訊

再次提醒,別忘了 uniq 只尋找相鄰的重複而不是比較整個檔案。

常用參數

  • -c:在每行前面顯示該行重複的次數
  • -d:只顯示重複出現的行(出現次數≥2)
  • -u:只顯示不重複的行(出現次數=1)
  • -i:忽略大小寫差異比較行
  • -f N:比較時忽略每行前面 N 個字元
  • -s N:比較時忽略每行前面 N 個字元,類似 -f 但不跳過欄位,只是字元數

常用範例

以 file.txt 內容如下為例

  1 cherry
3 apple
2 banana
1 cherry

計算每行出現次數

sort file.txt | uniq -c

輸出

  3 apple
2 banana
1 cherry

只顯示重複行

sort file.txt | uniq -d

輸出

  1 cherry

如果使用 cat file.txt | uniq -d 則不會有輸出。