GNU Core Utilities/comm
comm
コマンドは、2 つのソートされたファイルを比較して、共通する行やそれぞれのファイルにのみ含まれる行を出力するコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションが異なることがあります。
基本的な使い方
編集comm [オプション] ファイル1 ファイル2
ファイル1
と ファイル2
はそれぞれソート済みのテキストファイルでなければなりません。このコマンドは、ファイル1
と ファイル2
を比較し、共通する行と、それぞれのファイルにのみ含まれる行を出力します。
出力の形式
編集出力は 3 列に分かれます:
- ファイル1 のみに含まれる行
- ファイル2 のみに含まれる行
- 両方のファイルに共通する行
それぞれの列はタブで区切られます。
主なオプション(GNU coreutils版)
編集主なオプション オプション 説明 -1
ファイル1 のみに含まれる行を出力しない -2
ファイル2 のみに含まれる行を出力しない -3
共通する行を出力しない -u
重複する行を表示しない -i
大文字と小文字を区別しない
例
編集2 つのファイルを比較
編集comm file1.txt file2.txt
file1.txt
と file2.txt
を比較し、共通する行、file1.txt
のみに含まれる行、file2.txt
のみに含まれる行を表示します。
ファイル1 のみに含まれる行を出力しない
編集comm -1 file1.txt file2.txt
file1.txt
のみに含まれる行を出力せず、file2.txt
のみに含まれる行と共通する行だけを表示します。
重複行を表示しない
編集comm -u file1.txt file2.txt
重複した行を省略して、両方のファイルに共通する行のみを表示します。
FreeBSD 版との違い
編集comm
コマンドは FreeBSD でも提供されていますが、GNU 版といくつか異なる挙動がある場合があります。
主な違い
編集- オプションの違い
- FreeBSD 版では一部オプションが異なる場合があります。たとえば、
-u
オプションで重複行を表示しない機能がない場合があります。
- FreeBSD 版では一部オプションが異なる場合があります。たとえば、
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールすると、GNU 版のcomm
コマンドがgcomm
という名前で使えるようになります。pkg install coreutils gcomm -1 file1.txt file2.txt # GNU coreutils 版の comm
詳しくは、それぞれの環境で man comm
を確認してください。