本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「comm」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ソート済みのテキストファイルを比較する「comm」コマンドです。
「comm」は、テキストファイルを比較するコマンドです。「comm ファイル1 ファイル2」で2つのテキストファイルを比較し、ファイル1だけにある行、ファイル2だけにある行、共通している行を出力します。比較するファイルはソートされている必要があります。
commコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-1 | 1列目(ファイル1のみに含まれる行)を出力しない | |
-2 | 2列目(ファイル2のみに含まれる行)を出力しない | |
-3 | 3列目(両方のファイルに含まれる行)を出力しない | |
--check-order | 全ての行の組み合わせが一致していても、ソートされているかどうかを確認する | |
--nocheck-order | 入力が正しくソートされているかどうかを確認しない | |
--output-delimiter=文字列 | 列を区切る文字列を指定する(デフォルトはTAB) | |
「comm ファイル1 ファイル2」で、2つのテキストファイル(ファイル1、ファイル2)を比較します。比較するファイルは、「sort」コマンド(本連載第63回参照)などを使って事前にソートされている必要があります。
結果は「ファイル1のみにある行 ファイル2のみにある行 両方にある行」の3列で出力されます。列の区切りはタブ(TAB)で、「--output-delimiter」オプションで変更することができます。例えば、区切りを「カンマ(,)」にしたい場合は、「--output-delimiter=,」のように指定します。空白を含む文字列などにしたい場合は引用符(")で囲んでください。
comm ファイル1 ファイル2
(ファイル1とファイル2を比較する)(画面1)
comm --output-delimiter="," ファイル1 ファイル2
(比較した結果をカンマ区切りで表示する)
なお、ファイルがソートされていない場合は、その旨のメッセージが表示されます(画面2)。
「-1」「-2」「-3」オプションで、“表示しない列”を指定できます。「-1」は1列目(ファイル1のみに含まれる行)、「-2」は2列目(ファイル2のみに含まれる行)、「-3」は3列目(両方のファイルに含まれる行)を表示しません。
共通している行、つまり3列目を出力したくない場合は「-3」、共通している行だけ出力したい場合は「-12」のように指定します(画面3)。
comm -3 ファイル1 ファイル2
(共通している行は出力しない)
comm -12 ファイル1 ファイル2
(共通している行だけ出力する)
PC-9801NからのDOSユーザー(LinuxはPC-486DXから)。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、ライターとして活動。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.