標準(古い)出力形式では、ファイルが異なる領域でテキストを囲むことなく、ファイル間の違いが表示されます。
たとえば、次の1d0 <
(削除)を意味リンゴの第一のラインから削除する必要がfile1
あり、2a2 >
(APPEND)を意味りんごに追加する必要性をfile2
2行目に、その両方のファイルを一致させることができます。
で入手可能なドキュメントinfo diff
でさらに説明しています。
コンテキストなしで違いを表示する
「通常の」diff
出力形式は、周囲のコンテキストなしで、それぞれの違いの塊を示します。時々、そのような出力は、近くの変更されていない行の混乱なしに、行がどのように変化したかを見るための最も明確な方法です(ただし、コンテキストの0行を使用することで同様の結果を得ることができます)。ただし、この形式はパッチの送信に広く使用されなくなりました。そのためには、コンテキスト形式と統一形式が優れています。古い形式diff
およびPOSIX標準との互換性のために、標準形式がデフォルトです。--normal
オプションを使用して、この出力形式を明示的に選択します。
通常フォーマットの詳細な説明
通常の出力形式は、1つまたは複数の相違点で構成されています。各ハンクには、ファイルが異なる1つの領域が表示されます。通常の形式のハンクは次のようになります。
CHANGE-COMMAND
< FROM-FILE-LINE
< FROM-FILE-LINE...
---
> TO-FILE-LINE
> TO-FILE-LINE...
変更コマンドには3つのタイプがあります。それぞれは、最初のファイルの行番号またはコンマで区切られた行の範囲、変更の種類を示す単一の文字、および2番目のファイルの行番号またはコンマで区切られた行の範囲で構成されます。すべての行番号は、各ファイルの元の行番号です。変更コマンドのタイプは次のとおりです。
LaR
最初のファイルの行Lの後に、2番目のファイルの範囲Rの行を追加します。たとえば8a12,15
、ファイル1の行8の後にファイル2の行12〜15を追加することを意味します。または、ファイル2をファイル1に変更する場合、ファイル2の12〜15行目を削除します。
FcT
最初のファイルの範囲Fの行を2番目のファイルの範囲Tの行に置き換えます。これは、追加と削除を組み合わせたようなものですが、よりコンパクトです。たとえば5,7c8,10
、ファイル1の5〜7行目を変更して、ファイル2の8〜10行目として読み取ることを意味します。または、ファイル2をファイル1に変更する場合、ファイル2の行8〜10を変更して、ファイル1の行5〜7として読み取ります。
RdL
最初のファイルから範囲Rの行を削除します。行Lは、削除されなかった場合に2番目のファイルに現れる場所です。たとえば5,7d3
、ファイル1の5〜7行目を削除することを意味します。または、ファイル2をファイル1に変更する場合は、ファイル2の3行目にファイル1の5-7行を追加します。
こちらもご覧ください:
したがって、オレンジを表示するには、並べて表示するか、統合コンテキストを使用して表示する必要があります。
例:
$ diff -y file1 file2
apples <
oranges oranges
> apples
$ diff -u file1 file2
@@ -1,2 +1,2 @@
-apples
oranges
+apples
oranges
は、2つのファイル間の最大の共通部分であるため、取得するのは、2つのファイルの違いを表現する最短の方法です。