LoginSignup
14
12

More than 5 years have passed since last update.

commコマンドを利用して、2つのファイルから片方・両方に存在する行を調べる

Posted at

目的

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

まとめ

オプションが少し分かりにくいが、使い方を理解すれば簡単に共通行を抽出することができる。大変便利なコマンドであることが分かった。

参考

14
12
0

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
14
12