目的
2つのテキストファイルがあり、両方に存在する行のみを知りたい。
a.csv
1
22
333
4444
b.csv
1111
22
3333
方法:commコマンドを利用する
commコマンドとは
2つのファイルを比較し、FILE1のみに存在する値、FILE2のみに存在する値、両方に存在する値をそれぞれ出力する。
$ comm [-1] [-2] [-3] FILE1 FILE2
オプション | 意味 |
---|---|
-1 | 1列目を表示しない |
-2 | 2列目を表示しない |
-3 | 3列目を表示しない |
利用例
オプション無しで比較すると、左からa.csvのみに存在するもの、b.csvのみに存在するもの、両方に存在するものが表示される。
$ comm a.csv b.csv
1
1111
22
333
3333
4444
-1
を指定すると、a.csvのみに存在するものは表示されない。
$ comm -1 a.csv b.csv
1111
22
3333
-2
を指定すると、b.csvのみに存在するものは表示されない。
$ comm -2 a.csv b.csv
1
22
333
4444
-3
を指定すると、両方に存在するものは表示されない。
$ comm -3 a.csv b.csv
1
1111
333
3333
4444
-1 -2
を指定すると、両方に存在するものが表示される。
$ comm -1 -2 a.csv b.csv
22
まとめ
オプションが少し分かりにくいが、使い方を理解すれば簡単に共通行を抽出することができる。大変便利なコマンドであることが分かった。