perlでhtmlのbodyタグの前にgoogle analyticsタグを一括設置する[複数行置換]
仕事で必要になったので
複数行置換のサンプルとしても記録
google analytics コードの整形
まずgoogle analyticsのコードをperlに置換文字列として渡すために
改行が入っていると困るので改行を\nに置換する
ga_code.txtにはgoogle analyticsのコードが書いてある
$ perl -pi.bak -e 's/\n/\\n/g' ga_code.txt
その後テキストエディタなどでスラッシュをバックスラッシュでエスケープする
perlでの置換
$ perl -pi -e "s/置換したい文字列/置換後の文字列/g" example.html
なのでindex.htmlに対しての
実際の置換コマンドが以下
$ perl -pi -e "s/<\/body>/<script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','\/\/www.google-analytics.com\/analytics.js','ga');\n\n ga('create', 'UA-0000000-0', 'auto');\n ga('send', 'pageview');\n\n<\/script>\n<\/body>/g" index.html
current directory以下の複数ファイルをやる時などは
findを組み合わせて
$ find . -name '*.html' -exec perl -pi -e "s/<\/body>/<script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','\/\/www.google-analytics.com\/analytics.js','ga');\n\n ga('create', 'UA-0000000-0', 'auto');\n ga('send', 'pageview');\n\n<\/script>\n<\/body>/g" {} \;
実行する前にはなにかしら戻せるようにしておくのがよいでしょう
Author And Source
この問題について(perlでhtmlのbodyタグの前にgoogle analyticsタグを一括設置する[複数行置換]), 我々は、より多くの情報をここで見つけました https://qiita.com/ichi944/items/c72e924216b1dcd2c275著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .