▼ アイキャッチ画像は適当です
ミドルウェアなどのバージョンアップやマイグレーションなどの際に、「今の設定ってデフォルトからどこがどう変わってるんだっけ?」って気になることありますよね?
でも、単純に 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日の) 誕生日おめでとうありがとうございます!