comm Linuxのコマンドを使用すると、ユーザーは2つのソートされたファイルを1行ずつ比較できます。このチュートリアルでは、わかりやすい例を使用して、このコマンドラインツールについて説明します。ただし、その前に、このチュートリアルで説明されているすべての例がUbuntu16.04LTSでテストされていることに注意してください。
Linux通信コマンド
次の例は、「comm」ツールがどのように機能するかについての良いアイデアを与えるはずです。
1。 commを使用して2つのソートされたファイルを比較する方法
'comm'を使用して2つのソートされたファイルを比較するには、コマンドラインツールに引数としてそれらの名前を渡すだけです。一般的な構文は次のとおりです。
comm [name-of-first-file] [name-of-second-file]
たとえば、この場合、「file1」と「file2」が2つのファイルであるとします。前者には次の行が含まれています:
001
056
127
258
後者には次の行が含まれています:
002
056
167
369
この場合の「comm」コマンドの出力は次のとおりです。
comm file1 file2
したがって、出力が3つの列で構成されていることがわかります。最初の行には「file1」に固有の行が含まれ、2番目の行には「file2」に固有の行が含まれ、最後に3列目には両方のファイルに共通の行が含まれます。
2。 commコマンド出力の個々の列を抑制する方法
必要に応じて、commコマンド出力の個々の列を非表示にすることができます。このために、3つのコマンドラインオプションがあります: -1 、 -2 、および -3 。ご想像のとおり、これらの数値は抑制したい列を表しています。
たとえば、この場合の3番目の列を抑制するコマンドは次のとおりです。
comm -3 file1 file2
したがって、3番目の列が抑制されていることがわかります。
1つのコマンドで複数の列を抑制できることに注意してください。例:
comm -12 file1 file2
1列目と2列目の両方を抑制します。
3。ソートされていないファイルを通信で比較する方法
ご存知のように、commコマンドはソートされたファイルでのみ機能します。ファイルがソートされていないことが判明した場合、これをユーザーに通知するメッセージが出力に生成されます。たとえば、「file1」の1行目と2行目を入れ替えて、「file2」と比較しました。出力は次のとおりです。
したがって、コマンドが「file1」がソートされていないという出力を生成したことがわかります。これで、入力が並べ替えられているかどうかをツールで確認したくない場合は、 -nocheck-orderを使用できます。 オプション。
comm --nocheck-order file1 file2
そのため、以前に表示されていたメッセージが抑制されたことがわかります。
入力ファイルの並べ替えチェックを実行するようにcommコマンドに明示的に指示する場合に備えて、 -check-orderを使用できることに注意してください。 オプション。
4。カスタム文字列で通信出力列を区切る方法
デフォルトでは、commコマンド出力の列はスペースで区切られています。ただし、必要に応じて、それを変更し、選択した文字列を区切り文字として使用できます。これは、 -output-delimiterを使用して実行できます。 オプション。このオプションでは、区切り文字として使用する文字列を指定する必要があります。
comm --output-delimiter=STR file1 file2
たとえば、区切り文字としてプラス(+)記号を使用しました。
5。通信出力ラインをNULで終了させる方法
commコマンドの出力行は、デフォルトで改行で終了します。ただし、必要に応じて、代わりにNULで終了させることができます。これは、 -zを使用して実行できます コマンドラインオプション。
comm -z file1 file2
commコマンドは、多くの機能を提供していません。ここでは、ほとんどすべてのコマンドラインオプションについて説明しました。したがって、このチュートリアルで説明したことをすべて理解して実践すれば、日常のタスクでツールを使用する準備が整います。疑問や質問がある場合は、コマンドのマニュアルページにアクセスするか、下にコメントを残してください。