盒子里没有 Ruby/Python/Perl 等。
只有bash
,sed
和awk
。
一种方法是用地图替换字符,但它变得乏味。
也许一些我不知道的内置功能?
盒子里没有 Ruby/Python/Perl 等。
只有bash
,sed
和awk
。
一种方法是用地图替换字符,但它变得乏味。
也许一些我不知道的内置功能?
转义 HTML 实际上只涉及替换三个字符:<
、>
和&
. 对于加分,您还可以替换"
和'
。所以,这不是一个长sed
脚本:
sed 's/&/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'
您可以使用recode
实用程序:
echo 'He said: "Not sure that - 2<1"' | recode ascii..html
输出:
He said: "Not sure that - 2<1"
纯 bash,没有外部程序:
function htmlEscape () {
local s
s=${1//&/&}
s=${s//</<}
s=${s//>/>}
s=${s//'"'/"}
printf -- %s "$s"
}
只是简单的字符串替换。
or use xmlstar Escape/Unescape special XML characters:
$ echo '<abc&def>'| xml esc
<abc&def>
I'm using jq:
$ echo "2 < 4 is 'TRUE'" | jq -Rr @html
2 < 4 is 'TRUE'
之前的 sed 替换会破坏有效输出,例如
<
进入
&lt;
添加负前瞻,因此“&”仅更改为“&” 如果那个“&”后面没有跟“amp;” 修复:
sed 's/&(?!amp;)/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g'