web-dev-qa-db-ja.com

BashでHTMLをエスケープする簡単な方法は?

ボックスにはRuby/Python/Perlなどはありません。

bashsed、およびawkのみ。

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

おそらく私が知らないいくつかの組み込み機能はありますか?

32
James Evans

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

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

recodeユーティリティを使用できます。

    echo 'He said: "Not sure that - 2<1"' | recode ascii..html

出力:

    He said: &quot;Not sure that - 2&lt;1&quot;
9
Ivan

純粋なbash、外部プログラムなし:

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

単純な文字列置換。

1
miken32

またはxmlstarを使用 Escape/Unescape特殊XML文字

$ echo '<abc&def>'| xml esc
&lt;abc&amp;def&gt;
0
schemacs