logo

Linux でファイルを 1 行ずつ比較する方法 | diffコマンド

Linux の世界では、ファイルの管理と比較は、システム管理者と開発者の両方にとって共通のタスクです。ファイルを 1 行ずつ比較する機能は、違いを特定し、コードをデバッグし、データの整合性を確保するために非常に重要です。このプロセスを促進する強力なツールの 1 つは、diff>指示。この記事では、diff>Linux でファイルを 1 行ずつ比較するコマンド。

目次



diff コマンドを理解する

差分はの略です 違い .ザdiff>command は、ほとんどの Linux ディストリビューションにプリインストールされている多用途ユーティリティです。その主な目的は、2 つのファイルの内容を比較し、それらの違いを表示することです。このコマンドは、変更、追加、削除を明確で読みやすい形式で強調表示する包括的な方法を提供します。

このコマンドは、ファイルを 1 行ずつ比較することにより、ファイル内の相違点を表示するために使用されます。他のメンバーとは異なり、 cmp そして 通信 、2 つのファイルを同一にするために 1 つのファイル内のどの行を変更する必要があるかを示します。

覚えておくべき重要なことは、 差分 特定のものを使用する 特殊記号 そして 説明書 2 つのファイルを同一にするために必要です。最初のファイルを 2 番目のファイルと一致するように変更する方法について説明します。



diffコマンドの基本構文

基本的な構文は、diff>コマンドは次のとおりです。

diff [OPTION]... FILE1 FILE2>

ここで、「 FILE1`> そして「」 FILE2`> は、比較する 2 つのファイルです。

` OPTION`> フラグを使用すると、` の動作をカスタマイズできます。 diff`> 指示。



diff コマンドで使用可能なオプション

オプション

説明

-c>または--context>

コンテキストモードでの出力の違い

-u>または--unified>

統合モードでの出力の違い (より簡潔)

-i>または--ignore-case>

大文字と小文字を区別しない比較を実行する

–すべてのスペースを無視

行を比較するときに空白を無視する

-簡単な

ファイルが異なるかどうかのみを出力し、詳細は出力しません

Javaのif文

–再帰的

ディレクトリを再帰的に比較する

-y>または--side-by-side>

出力を並べて表示する

Linux でファイルを 1 行ずつ比較する方法の実用的な実装? :

2 つのファイルを比較する

Linux でファイルを 1 行ずつ比較します。

名前が付いた 2 つのファイルがあるとします。 a.txt そして b.txt インドの5つの州を含む。

cat a.txt cat b.txt>
catコマンドを使用してファイルの内容を表示する

catコマンドを使用してファイルの内容を表示する

ここで、オプションを指定せずに diff コマンドを適用すると、次の出力が得られます。

diff a.txt b.txt>
Linuxでファイルを1行ずつ比較する

Linuxでファイルを1行ずつ比較する

この出力が何を意味するかを見てみましょう。の最初の行 差分 出力には以下が含まれます:

  • 最初のファイルに対応する行番号、
  • 特別なシンボルと
  • 2 番目のファイルに対応する行番号。

私たちの場合のように、 0a1 つまり 行0(ファイルの先頭)に追加する必要があります タミル・ナードゥ州 2 番目のファイルの行番号 1 と一致するようにします。次に、各ファイル内でそれらの行が何であるかを、先頭にある記号で示します。

  • 先頭にある行 < 最初のファイルの行です。
  • 先頭にある行 > は 2 番目のファイルの行です。
  • 次の行には次の内容が含まれます 2,3c3 つまり、最初のファイルの 2 行目から 3 行目は、2 番目のファイルの行番号 3 と一致するように変更する必要があります。次に、上記の記号を含む行が表示されます。
  • 3 つのダッシュ (—) ファイル 1 とファイル 2 の行を区切るだけです。

両方のファイルを同一にするための概要として、最初に追加します タミル・ナードゥ州 最初のファイルの最初の部分で 2 番目のファイルの 1 行目と一致するようにし、その後、最初のファイルの 2 行目と 3 行目を変更します。 ウッタル・プラデーシュ州 そして コルカタ 2番目のファイルの3行目、つまり アーンドラ プラデーシュ州 。その後、最初のファイルの 5 行目を変更します。 ジャンムー・カシミール 2番目のファイルの5行目、つまり ウッタル・プラデーシュ州

diffコマンドを使用してファイル内の行を削除する

次のようなシナリオを考えてみましょう。diff>行を削除する必要があることを示します。 2 つのファイルがあると、a.txt>そしてb.txt>:

catコマンドを使用してファイルの内容を表示する

catコマンドを使用してファイルの内容を表示する

diff a.txt b.txt>
ファイル内の行を削除する

ファイル内の行を削除する

上記の出力 3d2 これは、最初のファイルの 3 行目を削除することを意味します。 テランガーナ 両方のファイルが 同期する 2行目で。

コンテキストモードでの相違点の表示

コンテキスト モードで違いを表示するには、 -c オプション。例でこれを理解してみましょう。2 つのファイルがあります。 ファイル1.txt そして ファイル2.txt :

catコマンドを使用してファイルの内容を表示する

catコマンドを使用してファイルの内容を表示する

diff -c file1.txt file2.txt>
コンテキストモードでの違いの表示

コンテキストモードでの違いの表示

上記の出力では次のようになります。

  • 最初のファイルは ` で示されます ***`> 、2 番目のファイルは ` で示されます ---`>
  • ` が付いている行 ***************`> セパレータとして機能します。
  • 最初の 2 行は、ファイル 1 とファイル 2 に関する情報を提供し、ファイル名、変更日、および変更時間が表示されます。
  • その後に 3 つのアスタリスク ` ***`> その後に、最初のファイルの行範囲 (1 行目から 4 行目) が続きます。 4 つのアスタリスク ` ****`> 次に来てください。最初のファイルの内容が特定のインジケーターとともに表示されます。
    • 行が変更されていない場合は、先頭に 2 つのスペースが付けられます。
    • 行を変更する必要がある場合は、先頭に記号とスペースを付けます。記号は次のことを示します。
      • `+`> : 同一の結果を得るために、2 番目のファイル内の行を最初のファイルに追加します。
      • `-`> : 同一の結果を得るために削除される最初のファイル内の行。
  • 3 つのダッシュ ` ---`> の後には、2 番目のファイルの行範囲 (1 行目から 4 行目) がカンマで区切られて続きます。 4 つのダッシュ ` ----`> 続いて、2 番目のファイルの内容が表示されます。

統合モードでの相違点の表示

統合モードでの違いを表示するには、 -で オプション。コンテキスト モードに似ていますが、 冗長な情報は表示されません または、情報を簡潔な形式で示します。

catコマンドを使用してファイルの内容を表示する

catコマンドを使用してファイルの内容を表示する

diff -u file1.txt file2.txt>
統合モードでの違いの表示

統合モードでの違いの表示

上記の出力では次のようになります。

  • 最初のファイルは ` で示されます ---`> 、2番目のファイルは`で示されます +++`>
  • 最初の 2 行には、ファイル 1 とファイル 2 に関する情報 (変更日時など) が表示されます。
  • その後、「 @@ -1> `,`> 4 +1`> ,`> 4 @@`> は両方のファイルの行範囲を示します。この場合、これは両方のファイルの 1 行目から 4 行目を表します。
  • 後続の行は、ファイルの内容を特定のインジケーターで表します。
    • 変更されていない行はプレフィックスなしで表示されます。
    • 削除される最初のファイル内の行には接頭辞が付けられます。->
    • 追加される 2 番目のファイルの行には接頭辞が付けられます。+>

この例では、出力は、両方のファイルを同一にするために、mv と comm を含む行を最初のファイルから削除する必要があることを示しています (file1.txt>)、それに diff と comm を含む行を追加する必要があります。

大文字と小文字を区別しないファイル間の比較

デフォルトでは、` diff`> 大文字と小文字が区別されます。大文字と小文字を区別しない比較を実行するには、` -i`> オプション:

catコマンドを使用してファイルの内容を表示する

catコマンドを使用してファイルの内容を表示する

diff>次に、コマンドを使用して、これらのファイルを-i>オプションを使用すると、比較で大文字と小文字が区別されなくなります。

diff -i file1.txt file2.txt>
大文字と小文字を区別しない比較

大文字と小文字を区別しない比較

  • 2d1>: これは、最初のファイルの 2 行目の変更を示します (file1.txt>)。のd>は削除の略で、最初のファイルから 2 行目を削除することを示します。
    • >: この行は削除する行の内容を示します。この場合はmvです。
  • 3a3>: これは、最初のファイルの 3 行目の追加を示します (file1.txt>)。のa>は add の略で、位置 3 に行を追加することを示します。
    • >違い>:この行は追加する内容を表します。この場合はdiffです。

要約すると、出力は、両方のファイルを同一にする (大文字小文字を無視する) ために、最初のファイルから mv を含む行を削除する必要があることを示しています (file1.txt>) と同じ位置に行 diff を追加します。のdiff>コマンドを使用して、-i>オプションを使用すると、大文字と小文字を区別しない比較が可能になり、分析中に mv と MV を同じものとみなします。

表示するdiff>バージョン

`のバージョンを確認するには diff`> システムにインストールされている場合は、` --version`> オプション:

diff --version>
diffコマンドのバージョンを表示する

diffコマンドのバージョンを表示する

このコマンドは、` のバージョン、ライセンス、および作成者に関する情報を提供します。 diff`> ユーティリティ。

diff コマンドに関するよくある質問 – FAQ

どうやって使うのですかdiff>Linuxで2つのファイルを1行ずつ比較するコマンドは?

2 つのファイルを 1 行ずつ比較するには、diff>コマンドを使用するには、次の構文を使用します。

diff file1.txt file2.txt>

このコマンドは、2 つのファイル間の相違点を表示し、追加、削除、変更を強調表示します。

ファイルを比較するときに空白の違いを無視できますか?diff>指示?

はいdiff>コマンドが提供するのは、-w>または--ignore-all-space>空白の違いを無視するオプション。例えば:

diff -w file1.txt file2.txt>

これは、インデントやスペースの変更が重要ではないコード ファイルを比較する場合に特に便利です。

を使用してパッチ ファイルを作成するにはどうすればよいですか?diff>指示?

2 つのファイル間の違いを表すパッチ ファイルを作成するには、-u>オプションを指定して、出力をファイルにリダイレクトします。

diff -u file1.txt file2.txt>私のパッチ.パッチ>

生成されたパッチ ファイルを後で適用して、別のファイルに変更を同期させることができます。

統一フォーマットとは何ですかdiff>出力、コンテキスト形式との違いは何ですか?

統一フォーマット (` -u`> オプション) ` 内 diff`> 出力は、コンテキスト形式 (` -c`> オプション)。変更内容がよりコンパクトな形式で表示されるため、ファイル間の変更が理解しやすくなります。

Linux で 2 つのディレクトリを再帰的に比較するにはどうすればよいですか?diff>指示?

2 つのディレクトリとその内容を再帰的に比較するには、` -r`> または ` --recursive`> オプション付きdiff>指示:

diff -r directory1/ directory2/>

このコマンドは、指定されたディレクトリ内のすべてのファイルを比較し、相違点に関する詳細情報を提供します。

結論

Linux の世界では、ファイルの比較はシステム管理者と開発者にとって一般的なタスクです。 ` diff> コマンドは、このプロセスに役立つ便利なツールです。この記事では、` の使用方法について説明します。 diff`> Linux でファイルを 1 行ずつ比較します。基本的な構文、コンテキスト モードや統合モードなどの重要なオプション、パッチ ファイルの作成やディレクトリの再帰的比較などの実践的なアプリケーションについて説明します。コードをデバッグする場合でも、ファイルの整合性を確保する場合でも、「」を理解し、習得する必要があります。 diff`> コマンドは、Linux で効率的にファイルを管理するために不可欠です。