Linuxコマンド辞典 commコマンド(テキスト処理)

ソートされた2つのファイルを行単位で比較する「comm」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

ソートされた2つのテキストファイルを行単位で比較し、違いを「ファイル1にも含まれる行」、「ファイル2のみに含まれる行は出力しない」、「両方のファイルに含まれる行は出力しない」の3列で出力します。

書式

$ comm [オプション] ファイル名1 ファイル名2

オプション

-1ファイル名1にのみ含まれる行を出力しない
-2ファイル名2にのみ含まれる行を出力しない
-3両方に含まれる行を出力しない
–check-orderソートされているかチェックする
–nocheck-orderソートされているかチェックしない
–output-delimiter=文字列の区切り文字を指定する

2つのファイルを比較する

$ comm ファイル名1 ファイル名2

実行結果

[sunarin@localhost work]$ cat comm1.txt
A
B
C
D
F
[sunarin@localhost work]$ cat comm2.txt
A
B
C
D
E
G
[sunarin@localhost work]$ comm comm1.txt comm2.txt 
                A
                B
                C
                D
        E
F
        G
[sunarin@localhost work]$ 

comm解説画像

ファイル名1にのみ含まれる行を表示しない

ファイル名1にのみ含まれる行を表示しない場合は、「-1」オプションを使用します。出力結果は2列で表示されます。

$ comm -1 ファイル名1 ファイル名2

実行結果

[sunarin@localhost work]$ comm -1 comm1.txt comm2.txt 
        A
        B
        C
        D
E
G
[sunarin@localhost work]$ 

ファイル名2にのみ含まれる行を表示しない

ファイル名2にのみ含まれる行を表示しない場合は、「-2」オプションを使用します。出力結果は2列で表示されます。

$ comm -2 ファイル名1 ファイル名2

実行結果

[sunarin@localhost work]$ comm -2 comm1.txt comm2.txt 
        A
        B
        C
        D
F
[sunarin@localhost work]$ 

両方に含まれる行を表示しない

ファイル名1及びファイル名2両方に含まれる行を表示しない場合は、「-3」オプションを使用します。出力結果は2列で表示されます。ファイル名1とファイル名2の差分を表示する場合に使用します。

$ comm -3 ファイル名1 ファイル名2

実行結果

[sunarin@localhost work]$ comm -3 comm1.txt comm2.txt 
        E
F
        G
[sunarin@localhost work]$