問題描述

我正在尋找一種方法來改變:

hello < world

到這個:

hello < world

我可以使用 sed,但是如何才能實現,而不使用隱含的正規表示式?

最佳解決辦法

嘗試 recode(archived page; GitHub mirror; Debian page):

$ echo '&lt;' |recode html..ascii
<

安裝在 Linux 和類似的 Unix-y 系統上:

$ sudo apt-get install recode

在 Mac OS 上安裝:

$ brew install recode

次佳解決辦法

用 perl:

cat foo.html | perl -MHTML::Entities -pe 'decode_entities($_);'

從命令列使用 php:

cat foo.html | php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);'

第三種解決辦法

另一種方法是透過 Web 瀏覽器進行管理,例如:

echo '!' | w3m -dump -T text/html

對於 cygwin 來說,這對我來說非常有用,下載和安裝分發是困難的。

這個答案發現 here

第四種辦法

使用 xmlstarlet:

echo 'hello &lt; world' | xmlstarlet unesc

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇