¿Corta manera de escapar de HTML en Bash?




html-entities (3)

Escapar de HTML realmente implica reemplazar tres caracteres: < , > y & . Para obtener puntos extra, también puede reemplazar " y ' . Por lo tanto, no es un script largo de sed :

sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g'

La caja no tiene Ruby / Python / Perl etc.

Sólo bash , sed , y awk .

Una forma es reemplazar los caracteres por el mapa, pero se vuelve tedioso.

Tal vez alguna funcionalidad incorporada que no conozco?


No puedo comentar aún, así que aquí hay una nueva respuesta:

El reemplazo de sed anterior desfigura la salida válida como

&lt;

dentro

&amp;lt;

Agregando una vista negativa negativa por lo que "&" solo se cambia a "& amp;" si ese "&" no es seguido por "amp;" arregla que:

sed 's/&(?!amp;)/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g'

Pure bash, no hay programas externos:

function htmlEscape () {
    s=${1//&/&amp;}
    s=${s//</&lt;}
    s=${s//>/&gt;}
    s=${s//'"'/&quot;}
    echo $s
}

Simplemente simple sustitución de cuerdas.





html-entities