Linux, コマンド · 1 min read · Sep 16, 2025

初心者のためのLinux commコマンドチュートリアル(5つの例)

Linuxのcommコマンドは、ユーザーが2つのソートされたファイルを行ごとに比較できるようにします。このチュートリアルでは、わかりやすい例を使ってこのコマンドラインツールについて説明します。しかし、その前に、このチュートリアルで言及されるすべての例は、Ubuntu 16.04LTSでテストされていることに注意してください。

Linux commコマンド

以下の例は、’comm’ツールがどのように機能するかについて良いアイデアを提供するはずです。

1. commを使用して2つのソートされたファイルを比較する方法

‘comm’を使用して2つのソートされたファイルを比較するには、コマンドラインツールにその名前を引数として渡すだけです。以下が一般的な構文です:

comm [最初のファイルの名前] [2番目のファイルの名前]

例えば、’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

は、最初と2番目の列の両方を抑制します。

3. commがソートされていないファイルを比較するようにする方法

ご存知の通り、commコマンドはソートされたファイルでのみ機能します。ファイルがソートされていない場合、出力にユーザーにそのことを知らせるメッセージが表示されます。例えば、’file1’の最初と2番目の行を入れ替え、その後’file2’と比較しました。出力は以下の通りです:

したがって、コマンドは’file1’がソートされていないというメッセージを出力しました。もし入力がソートされているかどうかをツールにチェックさせたくない場合は、–nocheck-orderオプションを使用できます。

comm --nocheck-order file1 file2

したがって、以前表示されていたメッセージが抑制されたことがわかります。

入力ファイルに対して明示的にcommコマンドにソートチェックを実行させたい場合は、–check-orderオプションを使用できます。

4. comm出力列をカスタム文字列で区切る方法

デフォルトでは、commコマンドの出力の列はスペースで区切られています。しかし、必要に応じて、区切り文字を任意の文字列に変更できます。これは、–output-delimiterオプションを使用して行うことができます。このオプションでは、区切り文字として使用したい文字列を指定する必要があります。

comm --output-delimiter=STR file1 file2

例えば、私たちはプラス(+)記号を区切り文字として使用しました。

5. comm出力行をNUL終端にする方法

commコマンドの出力行はデフォルトで改行終端です。しかし、必要に応じて、NUL終端にすることもできます。これは、-zコマンドラインオプションを使用して行うことができます。

comm -z file1 file2

結論

commコマンドは多くの機能を提供していません - ここでほぼすべてのコマンドラインオプションをカバーしました。したがって、このチュートリアルで説明したことを理解し、練習すれば、日常の作業でツールを使用する準備が整います。疑問や質問がある場合は、コマンドのマニュアルページにアクセスするか、下にコメントを残してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。