LoginSignup
29
18

More than 5 years have passed since last update.

Linuxコマンドで重複している行(だけ)を見つけたいとき (sortとuniqコマンド)

Posted at

【こんな貴方の助けになれば】

・Excelの機能で重複削除すると、重複してた行が消えてしまうから、何が重複してたのか、知りたい。(関数使えばわかるけど、そんなの面倒)

・そもそも、Excel使いたくないし、Linuxサーバ上だけで完結させたい。

【ポイント】

重複関連は、uniqコマンドで、いける。

ただ、uniqコマンドは、ソートしていないとダメらしい。
(ここは、Excelのvlookup関数と一緒ですね)
なので、先にsortコマンドを使用します。

【コマンド例】

uniqの -d オプションで、重複行を標準出力することができます。

sort "重複見つけたい.txt" | uniq -d


もちろん、リダイレクトすればファイルに出力されます。
下記は、重複している行だけ、出力されます。

sort "重複見つけたい.txt" | uniq -d > "重複してる行だけになる.txt"


下記は、重複していない行だけ、出力されます。(重複削除後のファイルを生成)

sort "重複見つけたい.txt" | uniq > "重複してない行だけになる.txt"

【コマンド実行例】

■元のファイル

$ cat hogehoge.txt
AAAAA
BBBBB
19000
BBBBB
AAAAA
19000
9000

■重複行を削除した結果を表示

$ sort hogehoge.txt | uniq
19000
9000
AAAAA
BBBBB

■重複している行だけを表示

$ sort hogehoge.txt | uniq -d
19000
AAAAA
BBBBB

【注意点】

当たり前ですが、ファイルサイズが大きいものを実施する際は、メモリやCPUにご注意ください。
安全かつ正確な動作を保障しきれませんので、ご了承ください。

29
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
18