La intención es insertar justo después de la HEAD
Código de etiqueta de Google en un sitio web HTML heredado.
#!/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
Lo anterior coloca el código de etiqueta de Google donde debería, pero sin las comillas simples:
<!-- 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);
Las comillas simples faltan una vez procesadas:
# 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);
Si sustituyo el '
con un \'
, Recibo un mensaje de error:
line 13: syntax error near unexpected token `('
line 13: ` gtag(\'js\', new Date());\'
Ya que estoy usando \
para continuar con cada línea, no estaba seguro de que la barra diagonal inversa para escapar de la comilla simple funcionara, pero pensé que lo intentaría.
¿Cómo puedo conservar esas comillas simples en el código de la etiqueta de Google?
sed 's/f/\x27/' <<<foo
o escape decimal sed 's/f/\d039/' <<<foo
sed
línea.