diffでテキストファイルの違う行だけ表示したい


diff

diff data1.txt data2.txt

と普通に使うと

--- data1.txt
+++ data2.txt
@@ -1,4 +1,4 @@
 11111
-22222
+22225
 33333
-44444
+44445

のように内容が同じ行と違う行とが混じって表示されます。
行数が多い時にはちょっと見づらいなと思いました。

sed

同じ行の先頭は空白なので、sedでフィルタ(削除)します。

sed -e '/^ .\+/d'

「^ 」先頭が空白で始まる「.\+」任意の文字列をdで削除という意味です。

diffとパイプでつなぎます。

diff data1.txt data2.txt | sed -e '/^ .\+/d'

すると

--- data1.txt
+++ data2.txt
@@ -1,4 +1,4 @@
-22222
+22225
-44444
+44445

違う行だけになってスッキリしました。

最近Windows上でbusyboxを使い、シェルの勉強をしているんですが奥が深いです。