ファイルの差分を取るdiff
コマンドの出力形式は複数あり、ここではその形式ごとの違いを比較する。
--- sample.txt.orig 2007-06-24 11:39:04.107394831 +0900
+++ sample.txt 2007-06-24 12:14:25.822713856 +0900
@@ -5,10 +5,9 @@
なにぬねの
はひふへほ
まみむめも
-やゆよ
-らりるれろ
+やゆよら
+りるれろ
わをん
-がぎぐげご
ざじずぜぞ
だぢづでど
ばびぶべぼ
@@ -23,6 +22,7 @@
ヤユヨ
ラリルレロ
ワヲン
+ァィゥェォ
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
---
の行は基準(元)のファイルの、+++
で始まる行は比較するファイル(patch
コマンドに渡した際に修正されるファイル)の名前とタイムスタンプ1が出力される@@
の行では2つのファイルで内容が異なる行を含むテキストブロック(Hunk)の各ファイル内における範囲を示しつつ、そのブロックが次の行から開始されることを示す各ブロック内は行単位で先頭の文字によって差分が
行の最初の文字 | 説明 | patchコマンドの動作 |
---|---|---|
+ (半角プラス) |
元ファイルにこの内容を追加したものが比較ファイルとなる | 追加 |
- (半角マイナス) |
元ファイルからこの内容を削除したものが比較ファイルとなる | 削除 |
半角スペース | 修正箇所の周辺の内容 | 変更なし |
上記の組み合わせで表現される。
*** sample.txt.orig 2007-06-24 11:39:04.107394831 +0900
--- sample.txt 2007-06-24 12:14:25.822713856 +0900
***************
*** 5,14 ****
なにぬねの
はひふへほ
まみむめも
! やゆよ
! らりるれろ
わをん
- がぎぐげご
ざじずぜぞ
だぢづでど
ばびぶべぼ
--- 5,13 ----
なにぬねの
はひふへほ
まみむめも
! やゆよら
! りるれろ
わをん
ざじずぜぞ
だぢづでど
ばびぶべぼ
***************
*** 23,28 ****
--- 22,28 ----
ヤユヨ
ラリルレロ
ワヲン
+ ァィゥェォ
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
+
と-
で始まる行)の表記はunified形式に近い!
で始まるあいうえお あいうえお
かきくけこ かきくけこ
さしすせそ さしすせそ
たちつてと たちつてと
なにぬねの なにぬねの
はひふへほ はひふへほ
まみむめも まみむめも
やゆよ | やゆよら
らりるれろ | りるれろ
わをん わをん
がぎぐげご <
ざじずぜぞ ざじずぜぞ
だぢづでど だぢづでど
ばびぶべぼ ばびぶべぼ
ぱぴぷぺぽ ぱぴぷぺぽ
アイウエオ アイウエオ
カキクケコ カキクケコ
サシスセソ サシスセソ
タチツテト タチツテト
ナニヌネノ ナニヌネノ
ハヒフヘホ ハヒフヘホ
マミムメモ マミムメモ
ヤユヨ ヤユヨ
ラリルレロ ラリルレロ
ワヲン ワヲン
> ァィゥェォ
ガギグゲゴ ガギグゲゴ
ザジズゼゾ ザジズゼゾ
ダヂヅデド ダヂヅデド
バビブベボ バビブベボ
パピプペポ パピプペポ
|
が付く8,9c8,9
< やゆよ
< らりるれろ
---
> やゆよら
> りるれろ
11d10
< がぎぐげご
25a25
> ァィゥェォ
diff
コマンドで出力形式の指定を行わない場合に書き出される形式8,9c8,9
のように表記される+
の行に相当するのが<
で始まる行、-
の行に相当するのが>
25a
ァィゥェォ
.
11d
8,9c
やゆよら
りるれろ
.
ed
コマンドが解釈/実行できる形式(edスクリプト)ed
コマンドによってパッチ当てができる(末尾にw
コマンドを追加して渡す)$ (cat [edスクリプト] && echo w) | ed - [パッチ対象ファイル]