概要
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`に渡す役割を果たします。この方法により、ソートされていないファイルも簡単に比較できるようになります。