【Linux】重複行を1行にまとめるコマンド:uniq

Linux

どーも!marusukeです!

テキストファイルなどの入力されたテキストストリーム内の重複している行を1行にまとめて出力するコマンドuniqについて説明します!

uniqコマンドでできること

uniq [オプション] 入力ファイル [出力ファイル]

uniq コマンドは、連続する重複行を入力ファイルまたは標準入力から削除します

uniqコマンドは、連続していない重複行は削除されないので、事前にsortコマンドで重複行を連続させておく必要があります

その他、重複した行の数をカウントする、重複行のみを表示する、非重複行のみを表示するなどのオプションがあります

uniqコマンドの使用例

以下のtestUniq.txtの重複行をまとめて標準出力に表示してみます

bash-3.2$ cat testUniq.txt 
apple
banana
orange
apple
banana
bash-3.2$ echo -e "apple\nbanana\napple\napple\nbanana" | sort | uniq
apple
banana

この例では、まず echo コマンドで出力されたテキストを sort コマンドでソートし、その後 uniq コマンドで重複行を削除します。結果として、ソートされたユニークな行のみが出力されます

uniqコマンドのオプション

オプション説明
-cそれぞれの行がファイル内に何回出現したかを表示します。
-d重複している行のみを表示します。
-u重複していない行のみを表示します。
-i大文字と小文字の違いを無視します。
-s N各行の最初のN文字を無視して比較します。

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました