目的是在之后插入 HEAD
旧版HTML网站中的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 Tag代码中保留这些单引号?
我不知道这是否可移植,但在GNUsed中可以使用十六进制转义
—
Paulo
sed 's/f/\x27/' <<<foo
或十进制逃脱 sed 's/f/\d039/' <<<foo
sed
线。