No.055テキスト処理

comm

コム・整列済みファイル比較

知識レベル 実践安全に試せる一般ユーザーで使える

整列済みファイルを比較し、差集合と共通集合を列ごとに出力します。集合としての差分確認に向きます。

答えよく使う形

  1. 三列表示で所属の違いを確認できます
  2. 共通行だけを抽出できます
  3. 1番目だけの行を表示しません
visitor@goodly: ~

$ 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

覚える順番の中で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

Goodly のメニュー