45

箱にはRuby/Python/Perl等はありません。

bashsed、およびのみawk

文字をマップで置き換える方法もありますが、面倒です。

おそらく、私が認識していない組み込み機能がありますか?

4

6 に答える 6

66

<HTML をエスケープするには、実際には、>、およびの3 つの文字を置き換えるだけ&です。"追加のポイントについては、とを置き換えることもできます'。したがって、これは長いsedスクリプトではありません。

sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g'
于 2012-10-13T13:49:01.500 に答える
2

または、xmlstar Escape/Unescape 特殊 XML 文字を使用します。

$ echo '<abc&def>'| xml esc
&lt;abc&amp;def&gt;
于 2019-06-07T09:04:47.153 に答える
0

私はjqを使用しています:

$ echo "2 < 4 is 'TRUE'" | jq -Rr @html
2 &lt; 4 is &apos;TRUE&apos;
于 2022-02-20T05:42:54.703 に答える
-5

以前の sed 置換は、次のような有効な出力を汚します

&lt;

の中へ

&amp;lt;

「&」が「&」にのみ変更されるように、否定先読みを追加します。その「&」の後に「amp;」がまだ続いていない場合 以下を修正します。

sed 's/&(?!amp;)/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g'
于 2015-03-07T12:51:15.913 に答える