diff
は 2 つのテキストファイルの内容を比較し、その差分を抽出するコマンドである。ユーザー自身が自作したプログラムを更新した場合に、更新前と更新後を比較してどこに変更があったのか調べたいときに利用する。
ここで、file1.txt と file2.txt をそれぞれ次のように作成する。
file1.txt | file2.txt |
|
|
この 2 ファイルに対して、diff
を実行すると、実行結果は次のように表示される。
diff file1.txt file2.txt
## 2a3
## > pear
## 6c7
## < banana
## ---
## > bananna
## 9,10c10
## <
## < strawberry
## ---
## > strawberry
この結果は、file1.txt の 2 行目に比べて file2.txt の 3 行目(2a3
)の方に pear が含まれている(> pear
)。また、file1.txt の 6 行目と file2.txt の 7 行目を比較すると、前者は banana であり、後者は bananna であるため、両者は異なっている。最後に、file1.txt の 9-10 行目と file2.txt の 10 行目を比べると、前者には空行と "strawberry" であり、後者は " strawberry" であり数個の空白文字を持つ。
ファイル内容の差分を求めるとき、空白を無視する場合は -w
オプションを付ける。こうすることで、 "strawberry" と " strawberry" は同じものとみなされる。
diff -w file1.txt file2.txt
## 2a3
## > pear
## 6c7
## < banana
## ---
## > bananna
## 10d10
## <
ファイル内容の差分を求めるとき、空白文字と空行の両方を共に無視する場合は -wB
オプションを付ける。
diff -wB file1.txt file2.txt
## 2a3
## > pear
## 6c7
## < banana
## ---
## > bananna
ファイル内容の差分を unified 形式で出力する。
diff -u file1.txt file2.txt
## --- file1.txt 2017-03-08 23:48:28.000000000 +0900
## +++ file2.txt 2017-03-08 23:48:22.000000000 +0900
## @@ -1,11 +1,11 @@
## apple
## orange
## +pear
## pineapple
## grape
## melon
## -banana
## +bananna
## watermelon
## peach
## -strawberry
## -
## + strawberry
## cherry