English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux uniq コマンド

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  
こんにちは 95  
こんにちは 95  
こんにちは 95  
こんにちは 95  
Linux 85  
Linux 85

uniq コマンドで重複行を削除した後、以下のような出力が得られます:

$ uniq testfile      #重複行を削除した後の内容  
test 30  
こんにちは 95  
Linux 85

ファイルをチェックし、ファイル内で重複行を削除し、行の先頭にその行が重複した回数を表示する。以下のコマンドを使用します:

uniq -c testfile

結果は以下のようになります:

$ uniq -c testfile      #重複行を削除した後の内容  
3 test 30             #数字の意味は、その行が何回も現れたことです3回  
4 こんにちは 95            #数字の意味は、その行が何回も現れたことです4回  
2 Linux 85            #数字の意味は、その行が何回も現れたことです2回

重複行が隣接していない場合、uniq コマンドは機能しません。例えば、以下のファイル内容の場合、uniq コマンドは機能しません:

$ cat testfile1      # 元の内容 
test 30  
こんにちは 95  
Linux 85 
test 30  
こんにちは 95  
Linux 85 
test 30  
こんにちは 95  
Linux 85

この時点で sort を使用できます:

$ sort  testfile1 | uniq
こんにちは 95  
Linux 85 
test 30

各行がファイル内で現れる回数を統計する:

$ sort testfile1 | uniq -c
   3 こんにちは 95  
   3 Linux 85 
   3 test 30

ファイル内で重複行を見つける方法:

$ sort testfile1 | uniq -d
こんにちは 95  
Linux 85 
test 30

Linux コマンド大全