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

diff3ツールを使用してLinuxで3つのファイルを比較する方法

以前のチュートリアルの1つで、2つのファイルを1行ずつ比較できるLinuxコマンドラインユーティリティ(diffと呼ばれる)について説明しました。しかし、要件が2つではなく、3つのファイルを比較することである場合はどうでしょうか。はい、これにもLinuxコマンドラインユーティリティがあり、適切に diff3と呼ばれています。 。

このようなツールを探している場合は、もう探す必要はありません。このチュートリアルでは、わかりやすい例を使用してdiff3の使用法を説明します。

But before we move forward, we would like you to know that all the examples mentioned in this tutorial have been tested on Ubuntu 14.04 with bash version 4.3.11(1), and the version of diff3 that we've used is 3.3.

diff3をインストール

diff3ツールは、デフォルトでシステムにインストールされる可能性があります。Ubuntuでは少なくともインストールされます。ただし、そうでない場合でも、GNU Diffutilsパッケージをインストールすることで簡単に実行できるため、心配する必要はありません。パッケージをダウンロードしてシステムにインストールする方法については、こちらをご覧ください。

Diff3の使用法

diff3ユーティリティは3つのファイルを比較するため、使用例では、ツールへの入力として渡す3つのファイルを取得する必要があります。

これがfile1です:

This is line1 with some change
This is line2
This is line3

これがfile2です:

This is line1
This is line2
This is line3

そして、これがfile3です:

This is line1
This is line2
This is line3

明らかに、これら3つのファイルの内容を見ると、最初のファイルの最初の行に変更が加えられているだけです。それでは、diff3がこの変更をどのように報告するかを見てみましょう。

この場合のdiff3の使用方法は次のとおりです。

diff3 file1 file2 file3

そして、これが生成する出力です:

====1
1:1c
This is line1 with some change
2:1c
3:1c
This is line1

次の方法で出力を理解できます。

  • 4つの「=」記号で始まり番号「1」で終わる最初の行は、変更が最初のファイルにあることを示しています。
  • 次の行で、最初の「1」はfile1を意味します。コロンの後の「1c」は、最初の行に「が含まれる」ことを意味します。実際の行は、出力の次の行に表示されます。
  • 同様に、2:1cと3:1cは、「file2とfile3の最初の行に含まれる」を意味します。また、行の内容は両方のファイルで同じであるため、実際の行は出力の最後に1回だけ表示されます。

より明確にするために、変更がfile3にある別のケースを考えてみましょう。

これがfile1です:

This is line1
This is line2
This is line3

これがfile2です:

This is line1
This is line2
This is line3

そして、これがfile3です:

This is line1 with some change
This is line2
This is line3

コマンドは同じままです:

diff3 file1 file2 file3

そして、これが出力です:

====3
1:1c
2:1c
This is line1
3:1c
This is line1 with some change

したがって、この場合の出力は次のように理解できます。

  • 変更はfile3にあります
  • file1とfile2の両方に、最初の行として「Thisisline1」が含まれています
  • file3には、最初の行として「これはいくつかの変更を加えたline1です」が含まれています。

これが、diff3レポートが行ごとにどのように変化するかについてのすべてでした。次に、ファイルの1つに余分な行が含まれている場合のdiff3の動作を見てみましょう。

file1とfile2は同じままですが、file3は次のとおりです。

This is line1
This is line2
This is line3
This is line4

その内容から明らかなように、file3の最後に余分な行が含まれるようになりました。

同じdiff3コマンドを実行してみましょう:

diff3 file1 file2 file3

コマンドが生成する出力は次のとおりです。

====3
1:3a
2:3a
3:4c
This is line4

出力は、変更がfile3にあることを示すことから始まります。変更はfile3の4行目(3:4c)にあります。これは、file1およびfile2と比較すると完全に新しい行です。

これまでに説明したのは、いくつかの簡単なケースでした。少し複雑な状況をいくつか取り上げてみましょう。たとえば、file1、file2、およびfile3に次のものが含まれていると見なします。

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

これで、file1とfile2の両方に変更が含まれ、それも別の行に含まれます。この場合、diff3が何を生成するか見てみましょう:

====
1:2,3c
This is line2 with some change
This is line3
2:2,3c
This is line2
This is line3
3:2,3c
This is line2
This is line3 with some change

上記の出力からわかるように、最初の行には数値が含まれていません。これは、1つではなく、複数のファイルに変更が含まれているためです。 diff3の場合、3つのファイルすべての2行目と3行目が異なります。これが、コロン(:)の後の単一の数字の代わりに、出力に範囲-'2,3'が含まれるようになった理由です。これは、2行目から3行目までを意味します。

もう1つの例を見てみましょう。今回は、3つのファイルに次の情報が含まれているとします。

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

これで、diffコマンドを実行すると、次の出力が生成されます。

====
1:4c
This is line4
2:3a
3:4,5c
This is line4
This is line5

ここで、理解しようとすると、diff3コマンドは、3つのファイルすべての3行目以降に変更があることを示しています。 file1には4行目として「Thisisline4」という行が含まれていますが、file3には4行目と5行目にそれぞれ「Thisisline4」と「Thisisline5」が含まれています。一方、file2には3行しかありません。

これで、diff3の基本的な作業について説明しました。その価値については、公式ドキュメントにツールについての説明があります。「diff3を使用できます。 3つのファイル間の違いを表示するコマンド。 2人が共通のオリジナル、diff3に独立した変更を加えた場合 元のバージョンと変更された2つのバージョンの違いを報告でき、競合に関する警告とともに両方の人の変更を含むマージされたファイルを作成できます。」

結論

ここで表面をかじったところです。Diff3はさらに多くのことを実行できます。たとえば、公式ドキュメントでも指摘されているように、これを使用して変更をマージすることもできます。さらに、コマンドの出力をカスタマイズしたり、コマンドが提供する他の機能にアクセスしたりできるコマンドラインオプションが多数あります。それはすべてマニュアルページにあります、それを通り抜けてください。


Linux
  1. diffコマンドを使用してLinuxでファイルを行ごとに比較する方法

  2. Scalpelデータ回復ツールを使用してLinuxで削除されたファイルを回復する方法は?

  3. コマンドラインを使用してLinuxを再起動する方法

  1. LinuxでLogrotateを使用してログファイルを管理する方法

  2. コマンドラインを使用してLinuxをシャットダウンまたは再起動する方法

  3. 11 Linux diff3 コマンドの例 (3 つのファイルを 1 行ずつ比較)

  1. ターミナル/コマンドラインを使用してLinuxでファイルを作成する方法

  2. Sort コマンドを使用して Linux でファイルをソートする方法

  3. Linux でバイナリ ファイルを比較するにはどうすればよいですか?