No.055テキスト処理
comm
コム・整列済みファイル比較
整列済みファイルを比較し、差集合と共通集合を列ごとに出力します。集合としての差分確認に向きます。
答えよく使う形
$ printf "anbncn" > left.txt
printf "bncndn" > right.txt
comm left.txt right.txt
a b c d
$ comm -12 left.txt right.txt
b c
$ comm users-before.txt users-after.txt
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中でLPIC-1・29 駅め / 106
どんなコマンド?
二つの一覧の差分を集合として見たい時、共通項目だけを抽出したい時、棚卸し結果を突合したい時に使います。
commは、二つの整列済みファイルを先頭から順に読み、行の大小関係を使って比較するコマンドです。第一列は1番目だけにある行、第二列は2番目だけにある行、第三列は両方にある行です。
重要なのは、入力が整列済みであることです。並び順が崩れていると結果を誤解しやすく、比較前にsortで同じ基準へそろえるのが基本です。
実務では、ユーザー一覧の差分確認、設定名の突合、配布対象と実在ファイルの照合などで役立ちます。diffが編集差分を見る道具なのに対し、commは所属の違いを集合的に見る道具です。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ comm
使用例と実行結果
行を押すとコピーできます。
a b c d
b c
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
つまずいたとき
結果がおかしい
原因入力が整列されていないか、整列基準がそろっていません。
こうする同一ロケールでsortしてから比較します。
空白や大文字小文字の違いで別行になった
原因前処理なしでは表記揺れを吸収しません。
こうするtrやsed、awkで前処理してから比較します。
終わったときの数(戻り値)
$ echo $?
- 0正常終了。比較処理を完了しました。
- >0ファイルを開けない、順序異常の扱いに失敗したなどで処理できませんでした。
気をつけることと入れ方
危険度は低いですが、整列されていない入力を比較すると誤診断の原因になります。ロケール差でsort結果が変わる点にも注意が必要です。
環境による違い
POSIXで基本動作は標準化されています。GNU実装では--check-orderなどの順序確認補助があります。
確かめた環境2026-04-09 に確認
よくある質問
diffと何が違いますか。
diffは編集差分、commは一覧の差集合と共通集合を確認する道具です。
並び順が違うだけでも変わりますか。
はい。整列済み入力が前提です。
資格試験では
- LinuC レベル1大事1.03.2 フィルタを使ったテキストストリームの処理LinuCレベル1では、テキストの比較、抽出、整形、標準入出力の理解が問われます。
- LPIC-1大事103.2 Process text streams using filtersLPIC-1では、フィルタを使った比較、抽出、整形の理解が重視されます。
- 共通基礎大事Linuxコマンド基礎
comm を最後まで読みました。
Linux コマンド辞典に戻る13 / 144