スポンサーリンク
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
スポンサーリンク