该框没有Ruby / Python / Perl等。
仅bash
,sed
和awk
。
一种方法是用地图替换字符,但它变得乏味。
也许我不知道一些内置功能?
答案 0 :(得分:39)
转义HTML实际上只涉及替换三个字符:<
,>
和&
。对于额外积分,您还可以替换"
和'
。所以,它不是一个很长的sed
脚本:
sed 's/&/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'
答案 1 :(得分:7)
您可以使用recode
实用程序:
echo 'He said: "Not sure that - 2<1"' | recode ascii..html
输出:
He said: "Not sure that - 2<1"
答案 2 :(得分:1)
纯bash,无外部程序:
function htmlEscape () {
s=${1//&/&}
s=${s//</<}
s=${s//>/>}
s=${s//'"'/"}
echo $s
}
只是简单的字符串替换。
答案 3 :(得分:0)
或使用xmlstar Escape/Unescape special XML characters:
$ echo '<abc&def>'| xml esc
<abc&def>
答案 4 :(得分:-3)
之前的sed替换会破坏有效的输出,如
<
到
&lt;
添加一个负面的预先设置&#34;&amp;&#34;只会变成&#34;&amp; amp;&#34;如果那&#34;&amp;&#34;并没有跟随&#34; amp;&#34;解决了:
sed 's/&(?!amp;)/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'