意図はHEAD
、従来のHTML WebサイトのGoogleタグコードの直後に挿入することです。
#!/bin/bash
find . -type f -iname "*.php" -or -iname "*.htm" -or -iname "*.html" | while read i; do
echo "Processing: $i"
sed -i 's*<HEAD>*&\
<!-- Global site tag (gtag.js) - Google Analytics -->\
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1234567-2"></script>\
<script>\
window.dataLayer = window.dataLayer || [];\
function gtag(){dataLayer.push(arguments);}\
gtag('js', new Date());\
\
gtag('config', 'UA-1234567-2');\
</script>*' "$i"
done
上記では、Googleタグコードを必要な場所に配置していますが、一重引用符は使用していません。
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1234567-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(js, new Date());
gtag(config, UA-1234567-2);
単一引用符は、処理後に失われます。
# diff actual_google_tag_code processed
6c6
< gtag('js', new Date());
---
> gtag(js, new Date());
8,9c8
< gtag('config', 'UA-1234567-2');
< </script>
---
> gtag(config, UA-1234567-2);
私が交換した場合'
には\'
、私は、エラーメッセージが表示されます:
line 13: syntax error near unexpected token `('
line 13: ` gtag(\'js\', new Date());\'
\
各行を継続するために使用しているので、一重引用符をエスケープするためのバックスラッシュが機能するかどうかはわかりませんでしたが、試してみると思いました。
Googleタグコードでこれらの単一引用符を保持するにはどうすればよいですか?
私は、これは移植性があるかどうか知りませんが、GNUsedに進エスケープとなり得る
—
サンパウロ
sed 's/f/\x27/' <<<foo
か、小数の脱出sed 's/f/\d039/' <<<foo
sed
行で始まる単一引用符で囲まれた文字列内にあるためです。