ホーム > テキスト処理・検索 > comm

comm: ソートされた2つのファイルの共通および固有の行を比較

commコマンドは、ソートされた2つのファイルの内容を比較し、一方にのみ存在する行と両方に共通する行を3つの列に分けて出力します。マージや重複排除の作業に役立ちます。

概要

commは「common」の略で、2つのソート済みのファイル間の行を比較することに特化したコマンドです。ファイルの内容を並列に比較し、その結果を3つの列に分けて表示します。最初の列は最初のファイルにのみ存在する行、2番目の列は2番目のファイルにのみ存在する行、3番目の列は両方のファイルに共通する行を示します。このコマンドは、特にデータベースリストやユーザーIDリストのようなソートされたテキストデータを比較する際に非常に強力です。

主な特徴

commコマンドの主な特徴は以下の通りです。

  • 2つのソートされたファイルを比較するために使用されます。(ファイルがソートされていない場合は、`sort`コマンドを先に使用する必要があります。)
  • 比較結果を3つの列にきれいに区別して出力します。
  • テキストデータの共通点と相違点を一目で把握しやすいです。
  • 出力列を選択的に非表示にする機能があり、様々な用途に活用可能です。

comm vs diff

commとdiffはどちらもファイル比較ツールですが、動作方式と目的に違いがあります。

  • comm: ソートされたファイルに特化しており、共通の行と固有の行を3つの列で出力します。変更点(行内容の修正)は検出できません。
  • diff: ソートされていないファイルも比較でき、行単位のすべての変更点(追加、削除、修正)を詳細に出力します。

主要オプション

commコマンドのオプションは、主に特定の列を非表示にするために使用されます。

1) 출력 열 제어

2) 도움말

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`comm` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

commコマンドの様々な使用例を通じて機能を習得してください。

2つのファイルの共通および固有の行を比較

comm file1.txt file2.txt

ソートされた2つのファイルの内容を3つの列で比較します。

2つのファイルに共通する行のみを出力

comm -12 file1.txt file2.txt

`-1`と`-2`オプションを使用して、最初のファイルと2番目のファイルにのみ存在する行を非表示にし、共通の行のみを出力します。

2つのファイルの固有の行のみを出力

comm -3 file1.txt file2.txt

`-3`オプションを使用して共通の行を非表示にし、各ファイルに固有の行のみを出力します。

ソートされていないファイルの比較

comm <(sort file1.txt) <(sort file2.txt)

`sort`コマンドをパイプ(`|`)を介して`comm`と共に使用することで、ソートされていないファイルも比較できます。

インストール

commは、ほとんどのLinuxディストリビューションに`coreutils`パッケージの一部としてデフォルトで含まれています。別途インストールする必要はありません。

ヒントと注意事項

commコマンド使用時の注意点をまとめました。

ヒント

  • commを使用する前に、**必ずファイルの内容をソートする必要があります。** ファイルがソートされていない場合、正しい比較結果は得られません。
  • ファイルがソートされているか確認するには、`comm file1.txt file2.txt`を実行した際に出力が期待と異なるか確認するか、`sort`コマンドでファイルをソートしてから再度比較してみてください。
  • `<(...)`構文はプロセス置換(process substitution)であり、`sort`コマンドの結果を一時ファイルのように`comm`に渡す役割を果たします。この方法により、ソートされていないファイルも簡単に比較できるようになります。

関連するコマンド

機能的に類似しているか、よく一緒に使われるコマンドです。


同じカテゴリのコマンド