Linux uniq コマンド

Linux 命令大全Linux コマンド大全

Linux uniq コマンドは、テキストファイル内で重複して出現する行を検査および削除するために使用され、通常は sort コマンドと組み合わせて使用します。

uniq はテキストファイル内で重複して出現する行を検査できます。

構文

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

パラメータ:

  • -c または --count 各行の横にその行が繰り返し出現する回数を表示します。
  • -d または --repeated 重複して出現する行のみを表示します。
  • -f<欄> または --skip-fields=<欄> 比較する指定された欄を無視します。
  • -s<文字位置> または --skip-chars=<文字位置> 比較する指定された文字を無視します。
  • -u または --unique 一度だけ出現する行のみを表示します。
  • -w<文字位置> または --check-chars=<文字位置> 比較する文字を指定します。
  • --help ヘルプを表示します。
  • --version バージョン情報を表示します。
  • [入力ファイル] ソート済みのテキストファイルを指定します。これを指定しない場合、標準入力からデータを読み取ります。
  • [出力ファイル] 出力するファイルを指定します。このオプションを指定しない場合、内容は標準出力デバイス(表示端末)に表示されます。

例

ファイル testfile の 2、3、5、6、7、9 行目は同じ行です。uniq コマンドで重複した行を削除するには、次のコマンドを使用できます:

uniq testfile 

testfile の元の内容は次のとおりです:

$ cat testfile      #原有内容  
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85 

uniq コマンドで重複した行を削除した後、次の出力結果になります:

$ uniq testfile     #删除重复行后的内容  
test 30  
Hello 95  
Linux 85 

ファイルを検査して重複して出現する行を削除し、行頭にその行が繰り返し出現する回数を表示します。次のコマンドを使用します:

uniq -c testfile 

結果は次のように出力されます:

$ uniq -c testfile      #删除重复行后的内容  
3 test 30             #前面的数字的意义为该行共出现了3次  
4 Hello 95            #前面的数字的意义为该行共出现了4次  
2 Linux 85            #前面的数字的意义为该行共出现了2次 
重複した行が隣り合っていない場合、uniq コマンドは機能しません。つまり、ファイルの内容が次のような場合、uniq コマンドは機能しません:
$ cat testfile1      # 原有内容 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 

このような場合は sort を使用できます:

$ sort  testfile1 | uniq
Hello 95  
Linux 85 
test 30

ファイル内での各行の出現回数を集計します:

$ sort testfile1 | uniq -c
   3 Hello 95  
   3 Linux 85 
   3 test 30

ファイル内で重複する行を見つけます:

$ sort testfile1 | uniq -d
Hello 95  
Linux 85 
test 30  

Linux 命令大全Linux コマンド大全

その他の拡張