モヒカンは正義

渋谷で働く怪しいWebエンジニアの生きた証と備忘録

2つの設定ファイルから空行やコメントを除いていい感じにdiffを表示するプチテクニック

▼ アイキャッチ画像は適当です

f:id:pinkumohikan:20180212222252p:plain

ミドルウェアなどのバージョンアップやマイグレーションなどの際に、「今の設定ってデフォルトからどこがどう変わってるんだっけ?」って気になることありますよね? でも、単純に diff コマンドで差分を出すだけだと改行やコメントが邪魔をして差分が分かりづらいですよねー。キレそう。

そういうときに使えるおまじないを教えます。

ドン

diff <(grep -v '^;' setting-a.ini | grep -v '^$') <(grep -v '^;' setting-b.ini | grep -v '^$')

(空行や ; で始まるコメント行を除いた結果をdiffしてるだけなんですけど、案外grepした結果でdiff取るの知られてなさそうだったので記事にしてみました)

動かしてみる

前提

こんな感じの設定ファイルがあったとして

setting-a.ini

; owner's name
owner = pinkumohikan

; owner's age
age = 24

setting-b.ini

; ie-i, miteru---?



; owner's name
owner = pinkumohikan

; owner's age
;
age = 25

単純にdiff取ると

$ diff setting-a.ini setting-b.ini
0a1,4
> ; ie-i, miteru---?
>
>
>
5c9,10
< age = 24
---
> ;
> age = 25

こんな感じで空行やコメントの差分が邪魔ですね、減給。

でもさっきのコマンドなら

$ diff <(grep -v '^;' setting-a.ini | grep -v '^$') <(grep -v '^;' setting-b.ini | grep -v '^$')
2c2
< age = 24
---
> age = 25

なるほど、ageが24から25に変わってるんやなーっていうのがひと目でわかりますね。

(1月18日の) 誕生日おめでとうありがとうございます!