La casella non contiene Ruby/Python/Perl ecc.Un modo breve per evitare l'HTML in Bash?
Solo bash/sed/awk.
Un modo è quello di sostituire i caratteri per mappa, ma diventa noioso.
Forse alcune funzionalità integrate di cui non sono a conoscenza?
La casella non contiene Ruby/Python/Perl ecc.Un modo breve per evitare l'HTML in Bash?
Solo bash/sed/awk.
Un modo è quello di sostituire i caratteri per mappa, ma diventa noioso.
Forse alcune funzionalità integrate di cui non sono a conoscenza?
L'escape di HTML comporta solo la sostituzione di tre caratteri: <
, >
e &
. Per i punti extra, puoi anche sostituire "
e '
. Quindi, non è una lunga sed
script:
sed 's/&/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'
non posso commentare ancora, quindi ecco una nuova risposta:
Il precedente sostituzione sed deturpa uscita valida come
<
in
&lt;
Aggiunta di uno sgancio negativo così "&" è solo modificato in "& amp;" se "&" non è già seguito da "amp;" correzioni:
sed 's/&(?!amp;)/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'
Grande errore. Quando codifico in HTML una stringa '&', è perché voglio che venga reso da qualche browser come '&'. Questo è il motivo per cui ** deve ** essere trasformato in '& amp;'. In questo modo, la codifica HTML e la decodifica HTML sono in equilibrio. Non si sopprime la codifica HTML solo perché l'input _looks like_ è già stato codificato in HTML. La codifica HTML è ** non ** idempotente. Non riuscendo a capirlo, alla fine porta a vulnerabilità XSS. –
@Ruud ha ragione; il modo giusto per farlo è quello di fuggire prima e commerciale, come nella risposta di ruakh. –
Sono totalmente d'accordo con ciò che @Ruud ha detto tranne che avrebbe dovuto enfatizzare ** l'incapacità di cogliere che porta alle vulnerabilità XSS ** – kmkaplan
È possibile utilizzare recode
utility:
echo 'He said: "Not sure that - 2<1"' | recode ascii..html
uscita:
He said: "Not sure that - 2<1"
Probabilmente non disponibile se non ci sono Python/Ruby/Perl. – tbodt
sembra bello, grazie –
@JamesEvans: Di niente! – ruakh
+1 per eleganza ed efficienza. Dovresti pubblicare la tua risposta qui: http://stackoverflow.com/questions/5929492/bash-script-to-convert-from-html-entities-to-characters dove raccomandano l'installazione di 'recode',' perl', 'php ',' xmlsarlet' e 'w3m' (un browser web per gridare forte). L'ultima risposta consiglia l'uso di Python3, che sebbene sia installato di default (almeno in Ubuntu) è eccessivo. – WinEunuuchs2Unix