スポンサーリンク

diff -uオプション

まず処理しやすくするために、-uオプションでUnified形式で表示します。
参考:diffの-u/-c/-yオプションで表示形式を変更

※MACターミナル(BSD系)での動作確認です。

 $ diff -u in.txt in2.txt 
--- in.txt	2019-04-28 20:56:30.000000000 +0900
+++ in2.txt	2019-04-28 20:56:06.000000000 +0900
@@ -1,6 +1,8 @@
-1diff01
 line01
+2diff01
 line02
 line03
+2diff02
 line04
 line05
+2diff03

スポンサーリンク

追加分の差分のみ抽出

grepで先頭が+の文字の行を抽出します。
ただし、先頭が+++の行は除外しています。
参考:grep時にある文字列を除外して検索
追加分のみ差分が抽出できます。

  $ diff -u in.txt in2.txt | grep ^+ | grep -v ^+++
+2diff01
+2diff02
+2diff03

先頭の+の文字をsedで削除すると、差分の文字列のみ抽出できます。
 $ diff -u in.txt in2.txt | grep ^+ | grep -v ^+++ | sed s/^+//
2diff01
2diff02
2diff03

削除された差分のみ抽出

こちらも同じように、grepで先頭が-の文字の行を抽出します。
ただし、先頭が---の行は除外しています。
削除分のみ差分が抽出できます。

 $ diff -u in.txt in2.txt | grep ^- | grep -v ^---
-1diff01

同様に、先頭の-の文字をsedで削除すると、差分の文字列のみ抽出できますね。
 $ diff -u in.txt in2.txt | grep ^- | grep -v ^--- | sed s/^-//
1diff01

スポンサーリンク