diffコマンド出力フォーマット解読
6042 ワード
diffコマンド出力フォーマット解読
1.diffコマンドの使い方
フォルダの比較であれば、【-r】オプションを追加する必要があります.他の多くのオプションについては、自分で資料を調べることができますが、ここでは省略します.
2.diffの3種類の出力フォーマット
歴史的な理由からdiffには3つのフォーマットがあります.通常フォーマット コンテキストフォーマット(context diff)、 を追加する必要があります.統合フォーマット(unified diff)は、 を追加する必要があります.
説明を容易にするために、まず2つのテキストファイルを作成します.ファイル名はそれぞれf 1(変更前)とf 2(変更後)です.f 1の内容は:
f 2の内容は、
2.1一般形式
コマンドライン入力
得られた結果は
上の出力は4つの部分に分かれています.
2.1.1
また、3つの部分に分かれています.1.前の
2.1.2
前の小さい番号は、f 1から行を除去することを示し、後の「a」は行の内容を示す.
2.1.3分割線
f 1とf 2を分割するための変動状況.
2.1.4
前の大きい符号はf 2が行を追加したことを示し、後の「b」または「c」は行の内容を表す.
2.2コンテキストフォーマット
使用方法は、
出力結果は以下の通りです.
上記の出力結果は4つの部分に分かれています.
2.2.1ファイル名と時間情報
特に注意:
2.2.2分割線
2.2.3変更前の文書
2.2.4変更後の文書
2.3連結フォーマット
2つのファイルの類似度が高い場合、コンテキストフォーマットのdiffは、重複するコンテンツを大量に表示し、スペースを浪費します.1990年、GNU diffは「統合フォーマット」のdiffを率先して発売し、f 1とf 2のコンテキストを統合して表示した.その使用方法は
コマンドの入力
出力結果は
上の結果は3つの部分に分かれています.
2.3.1ファイル名と時間情報
2.3.2変動位置
2.3.3変動の具体的な内容
2つのファイルのコンテキストを結合して表示するので、「結合フォーマット」と呼ばれます.各行の一番前のフラグビットは、空は変動なし、マイナスは最初のファイルが削除された行、プラスは2番目のファイルが追加された行、または最初のファイルに基づいて追加された行を表します.
ファイルを変更するのは、車を改造するのと同じで、部品の一部(-)を取り外して部品の一部(+)を取り付ける過程と見ることができます.下図は行番号とファイルの対応関係を説明しています.
【end】
参考資料
チェン一峰:diffが読めます
1.diffコマンドの使い方
diff
コマンドは、2つのファイル(またはフォルダ)の違いを比較できます.コマンドの使用方法は、次のとおりです.diff [ ] ( ) ( )
フォルダの比較であれば、【-r】オプションを追加する必要があります.他の多くのオプションについては、自分で資料を調べることができますが、ここでは省略します.
2.diffの3種類の出力フォーマット
歴史的な理由からdiffには3つのフォーマットがあります.
-c
オプション-u
オプション説明を容易にするために、まず2つのテキストファイルを作成します.ファイル名はそれぞれf 1(変更前)とf 2(変更後)です.f 1の内容は:
a
a
a
a
f 2の内容は、
a
a
b
c
d
2.1一般形式
コマンドライン入力
$ diff f1 f2
得られた結果は
3,4c3,5
< a
< a ---
> b
> c
> c
上の出力は4つの部分に分かれています.
2.1.1
3,4c3,5
は、変動位置を説明するために使用される.また、3つの部分に分かれています.1.前の
3,4
は、f 1の3~4行目を示す.2.中間のc
は変動を示すパターンがコンテンツ変更(change)であり、他のパターンはa
(増加、addition)とd
(削除、deletion)である.3.後の3,5
はf 2の3~5行目を示す.2.1.2
f1
で削除するロー< a
< a
前の小さい番号は、f 1から行を除去することを示し、後の「a」は行の内容を示す.
2.1.3分割線
---
f 1とf 2を分割するための変動状況.
2.1.4
f2
で追加するロー> b
> c
> c
前の大きい符号はf 2が行を追加したことを示し、後の「b」または「c」は行の内容を表す.
2.2コンテキストフォーマット
使用方法は、
-c
オプション(contextを表す)を追加することです.diff -c f1 f2
出力結果は以下の通りです.
*** f1 2016-04-17 11:48:13.008810500 +0800
--- f2 2016-04-17 11:48:24.090444400 +0800
***************
*** 1,4 ****
a
a
! a
! a
--- 1,5 ----
a
a
! b
! c
! c
上記の出力結果は4つの部分に分かれています.
2.2.1ファイル名と時間情報
*** f1 2016-04-17 11:48:13.008810500 +0800
--- f2 2016-04-17 11:48:24.090444400 +0800
特に注意:
***
は変動前の文書、---
は変動後の文書を表す.2.2.2分割線
***************
2.2.3変更前の文書
f1
*** 1,4 ****
a
a
! a
! a
*** 1,4 ****
は、変動前のファイル(すなわちf 1)の1~4行目を示す.また、ファイル内容の各行の先頭には、1つのタグビットがある.空であれば、その行に変化がないことを示す.(!)であれば、その行に変更があることを示す.マイナス記号(-)であれば、その行が削除されたことを示す.プラス記号(+)であれば、その行為が新たに追加されたことを示す.2.2.4変更後の文書
f2
--- 1,5 ----
a
a
! b
! c
! c
--- 1,5 ----
は、変動後の文書(すなわちf 2)の1~5行目を示す.その他は前述の通りである.2.3連結フォーマット
2つのファイルの類似度が高い場合、コンテキストフォーマットのdiffは、重複するコンテンツを大量に表示し、スペースを浪費します.1990年、GNU diffは「統合フォーマット」のdiffを率先して発売し、f 1とf 2のコンテキストを統合して表示した.その使用方法は
-u
オプション(unifiedを表す)を追加することです.コマンドの入力
$ diff -u f1 f2
出力結果は
--- f1 2016-04-17 11:48:13.008810500 +0800
+++ f2 2016-04-17 11:48:24.090444400 +0800
@@ -1,4 +1,5 @@
a
a
-a
-a
+b
+c
+c
上の結果は3つの部分に分かれています.
2.3.1ファイル名と時間情報
--- f1 2016-04-17 11:48:13.008810500 +0800
+++ f2 2016-04-17 11:48:24.090444400 +0800
---
は変動前の文書、+++
は変動後の文書を表す.2.3.2変動位置
@@ -1,4 +1,5 @@
が変動する位置は、2つのグループ@@
の間に配置される.-1,4
は、変動前のファイルについて、1行目(1行目を含む)から4行連続(すなわち1,2,3,4行)を示し、+1,5
は、変動後のファイルについて、1行目(1行目を含む)から5行連続(すなわち1,2,3,4,5行)を示す.2.3.3変動の具体的な内容
a
a
-a
-a
+b
+c
+c
2つのファイルのコンテキストを結合して表示するので、「結合フォーマット」と呼ばれます.各行の一番前のフラグビットは、空は変動なし、マイナスは最初のファイルが削除された行、プラスは2番目のファイルが追加された行、または最初のファイルに基づいて追加された行を表します.
ファイルを変更するのは、車を改造するのと同じで、部品の一部(-)を取り外して部品の一部(+)を取り付ける過程と見ることができます.下図は行番号とファイルの対応関係を説明しています.
【end】
参考資料
チェン一峰:diffが読めます