読者です 読者をやめる 読者になる 読者になる

フッタ追加をワンライナーで

相当数のhtmlに一撃でフッタを追加したかったので、ワンライナーでやってみた。

find . -name '*.html' | xargs perl -pi -e 's#(\s*)</body>#\%include:footer\%$/$1</body>#g;'


【訂正】
$/は標準入力の区切り文字でUNIX環境だとLFになるらしい。なんかものすごい勘違いをしていた。。。
よって、上の方法だと改行コードがCRLFのケースでうまくいかないので以下にて。

find . -name '*.html' | xargs perl -pi -e 's#(\s*)</body>(\r)?$#\%include:footer\%$2\n$1</body>$2#g;'


これ以外に差分ないよねー、ってことをちゃんと担保したい。ってことでチェックもワンライナー

svn diff *.html | perl -lne 'print $_ if (m/^\+[^+]+/ && !m/include:footer/)'


そしてがないhtmlがないよねーってこともチェックしておく。若干かっこわるいけど。

find . -name '*.html' -print0 | xargs -0 perl -le 'for (@ARGV) { open($fh,"<", $_); @lines=<$fh>; close($fh); $str=join "", @lines; print $_ unless $str=~m/include:footer/ }'