###導入###
Linux の | comm コマンドを使用すると、ユーザーは 2 つの sorted ファイルを行ごとに比較できます。このチュートリアルでは、いくつかのわかりやすい例を使用して、このコマンド ライン ツールについて説明します。始める前に、このチュートリアルで説明されているすべての例が Ubuntu 16.04LTS バージョンでテストされていることにご注意ください。 .
次の例は、comm コマンドがどのように機能するかを示しています。 。
|
comm を使用して 2 つの並べ替えられたファイルを比較する方法
comm コマンドを使用して 2 つの並べ替えられたファイルを比較するには、それらの名前を引数として comm コマンドに渡すだけです。以下は通常の構文です:
リーリー
たとえば、この場合、file1 と file2 が 2 つのファイルであると仮定します。前者には次の行が含まれます:
リーリー
後者には次の行が含まれます:
リーリー
この時点で、comm コマンドの出力は次のようになります。
リーリー
ご覧のとおり、出力には 3 つの列が含まれています。最初の列は file1 のみに含まれるコンテンツ、2 列目は file2 のみに含まれるコンテンツ、そして最後の 3 列目は両方のファイルに含まれるコンテンツです。
comm コマンドの出力に特定の列を出力しない方法
必要に応じて、comm コマンド出力の特定の列を出力できません。この機能には、-1、-2、-3 の 3 つのコマンド ライン オプションが使用できます。ご想像のとおり、これらの数値は出力したくない列を表しています。
たとえば、次のコマンドは上記の例の 3 番目の列を出力しません:
リーリー
つまり、3 列目には出力がないことがわかります。
単一のコマンドで複数の列のコンテンツを同時に出力できないことに注意してください。例えば:###
リーリー
上記のコマンドでは、1 列目と 2 列目は出力されません。
comm コマンドを使用して 2 つの未ソートのファイルを比較する方法
ご存知のとおり、comm は並べ替えられたファイルに対してのみ使用できます。ファイルの 1 つがソートされていないことが判明した場合、出力にメッセージが生成され、ユーザーに通知されます。たとえば、file1 の 1 行目と 2 行目を交換し、file2 と比較します。コマンドの出力は次のとおりです:
ご覧のとおり、このコマンドは次のような出力を生成します: file1 はまだソートされていません。この時点で、入力が並べ替えられているかどうかをツールでチェックしたくない場合は、--nocheck-order オプションを使用できます。
リーリー
以前に表示されたプロンプト メッセージが消えていることがわかります。
入力ファイルがソートされているかどうかを
comm コマンドに明示的に指示したい場合は、--check-order オプションを使用できることに注意してください。
如何用自定义字符串分隔comm 命令的输出列
默认情况下,comm 命令的输出列之间是以空格分隔的。然而,如何你想使用一个自定义字符串作为分隔符,那么你可以使用 --output-delimiter选项。使用该选项时需要指定你想用来作为分隔符的字符串。
comm --output-delimiter=+ file1 file2
比如,我们使用加号来作为分隔符:
如何使 comm 的输出行以 NUL字符终止
默认情况下,comm 命令的输出行以新行终止。然而,如果你想,那么你可以改为以 NUL
字符终止,只需要使用-z 选项即可:
comm -z file1 file2
结论
comm 命令并没有特别多的特性性,我们在这儿已经讨论了它的绝大多数命令行选项。只需要理解和练习在这篇教程中讨论的内容,那么你便可以在日常工作中知道如何使用这个工具了。如果你有任何问题或者疑问,请前往该命令的 man 手册,或者在下面评论。