Linux,2つのファイルで共通または片方にのみ存在する行を取得

スポンサーリンク

鍛錬 389

Linux,2つのファイルで共通、または片方にのみ存在する行を取得する

2つのファイルで共通している行(同じ行)や、その逆で片方のファイルにしか存在しない行を取得するには、comm を使用します。

comm を使用する前に、各ファイルがソートされている必要があります。
 
使用方法は、以下に示す通りです。

共通している行を取得

comm -12 ファイル1 ファイル2

 
ファイル1にしか存在しない行を取得

comm -23 ファイル1 ファイル2

 
ファイル2にしか存在しない行を取得

comm -13 ファイル1 ファイル2

オプションについて

以下は、上記で記したオプションについてです。

オプション 機能
-1 ファイル1にのみ含まれる行を出力しない
-2 ファイル2にのみ含まれる行を出力しない
-3 両方のファイルに含まれる行を出力しない
 
スポンサーリンク

サンプルファイル

以下は、今回使用するサンプルファイル、sample_1.txt と sample_2.txt です。

既にソート済みのファイルとします。

sample_1.txt

111
222
333
444
555

sample_2.txt

000
222
333
444
999

 
上記に示した通り、「共通している行」と「片方のファイルにのみ存在する行」は以下に示す通りです。

項目
共通 222・333・444
ファイル1にのみ含まれる行 111・555
ファイル2にのみ含まれる行 000・999

実行結果

共通している行を取得

以下は、サンプルファイル sample_1.txt と sample_2.txt の共通している行を取得しています。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ comm -12 sample_1.txt sample_2.txt
222
333
444

sample_1.txt にしか存在しない行を取得

以下は、sample_1.txt にしか存在しない行を取得してます。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ comm -23 sample_1.txt sample_2.txt
111
555

ファイル2にしか存在しない行を取得

以下は、sample_2.txt にしか存在しない行を取得してます。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ comm -13 sample_1.txt sample_2.txt
000
999
スポンサーリンク

シェアする

フォローする