GNU/Linux >> Linux の 問題 >  >> Linux

Linux の「comm」コマンドと例

多くの場合、テキスト ファイルのバージョンを比較すると便利です。システム管理者やソフトウェア開発者にとって、これは特に重要です。たとえば、システム管理者は、システムの問題を診断するために、既存の構成ファイルを以前のバージョンと比較する必要がある場合があります。同様に、プログラマーは、時間の経過とともにプログラムに加えられた変更を頻繁に確認する必要があります。

通信 ユーティリティは、2 つの並べ替えられたファイルの行ごとの比較を表示します。表示される 3 つの列の最初の列には file1 でのみ見つかった行がリストされ、2 番目の列には file2 でのみ検出された行がリストされ、3 番目の列には両方のファイルに共通する行がリストされます。 「comm」コマンドの基本的な構文は次のとおりです。

# comm [options] file1 file2

議論

file1 および file2 引数は、comm が比較するファイルのパス名です。 file1 または file2 の代わりにハイフン (–) を使用すると、comm はそのファイルの代わりに標準入力を読み取ります。

オプション

オプションを組み合わせることができます。オプションがない場合、comm は 3 列の出力を生成します。

オプション 機能
-1 列 1 を表示しません (file1 のみにある行は表示しません)。
-2 列 2 を表示しません (file2 のみにある行は表示しません)。
-3 列 3 を表示しません (両方のファイルにある行を表示しません)。
-i 大文字と小文字を区別しない行の比較
– -check-order すべての入力行がペア可能であっても、入力の順序を確認してください
– -nocheck-order 入力の順序を無視
– -output-delimiter=STR 区切り文字「STR」で列を区切ります
– -help ヘルプ メニューを表示します
– -バージョン コマンドのバージョン情報を表示
注意 :ファイルがソートされていない場合、comm は正しく動作しません。 2 列目の行には 1 つの TAB が先行し、3 列目の行には 2 つの TAB が先行します。終了ステータスは、comm が正常に完了したか (0)、異常に完了したか (0 以外) を示します。

Linux での「comm」コマンドの使用例

例 1:基本的な使い方

ソートされた 2 つのファイルを比較するための「comm」コマンドの基本的な例を見てみましょう。ファイルは次のとおりです。

# cat file1
aa
bb
cc
dd
# cat file2
cc
xx
yy
zz

comm コマンドは、ファイルを行ごとに比較し、同一の行を出力します。例:

# comm file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

このコマンド出力は 3 つの列に表示されます。列 1 はファイル 1 のみの行 (aa、bb、dd) を示し、列 2 はファイル 2 のみのすべての行 (xx、yy、zz) を示し、列 3 はファイル間の同じ行をすべて示します。 2 つのファイル (cc)。これは diff よりもはるかに詳細な比較であり、1 つまたは 2 つの単純な変更を見つけたり確認したりするだけの場合、出力が膨大になる可能性があります。ただし、どちらのファイルにもあまり詳しくなく、それらを比較したい場合には、非常に便利です。

例 2:カウントの抑制

comm は、-n という形式のオプションをサポートします。ここで、n は 1、2、または 3 のいずれかです。これらのオプションを使用すると、非表示にする列を指定します。たとえば、両方のファイルで共有されている行のみを出力したい場合は、列 1 と 2 の出力を抑制します:

# comm -12 file1 file2
cc

同様に、以下のコマンドを使用して、それぞれ file1 と file2 にのみ存在する行のみを表示できます。

# comm -23 file1 file2
aa
bb
dd
# comm -13 file1 file2
xx
yy
zz

例 3:入力の並べ替えチェック

comm コマンドには、並べ替えられた入力をチェックするための 2 つのオプションがあります。
1. –チェックオーダー
2. –nocheck-order

–チェック オーダー オプションは、比較する前に入力が正しくソートされていることを確認します。入力がソートされていない場合、以下に示すようなエラーが発生します:

# comm --check-order file1 file2
aa
bb
cc
dd
	xx
comm: file 2 is not in sorted order

一方、–nocheck-order オプションを使用すると、入力がソートされた形式でない場合でもファイルを比較できます。例:

# cat file1
aa
bb
cc
dd
# cat file2
xx
cc
yy
zz
# comm --nocheck-order file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

例 4:区切られた出力

comm には、ユーザー指定の区切り文字を使用して出力を区切るオプションも用意されています。たとえば、デフォルトの「タブ」区切りの出力の代わりに、「|」などの区切り文字を使用できます。 (パイプ) 以下の例に示すように:

# comm --output-delimiter="|" file1 file2
aa
bb
||cc
dd
|xx
|yy
|zz

通信速度差

通信 diff に似ています 両方のコマンドが 2 つのファイルを比較するという点で。しかし、comm は uniq のように使用することもできます。 comm は、2 つのソート済みファイル間で重複または一意の行を選択しますが、uniq は、同じソート済みファイル内の重複または一意の行を選択します。


Linux
  1. 例を含むLinuxTeeコマンド

  2. 例を含むLinuxヘッドコマンド

  3. LinuxでのJQコマンドと例

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

  3. Linuxでのエコーコマンド(例付き)

  1. Linuxでのmanコマンドと例

  2. LinuxでのAWKコマンドと例

  3. LinuxでのCurlコマンドと例