【问题标题】:Decode HTML entities with SED or AWK使用 SED 或 AWK 解码 HTML 实体
【发布时间】:2020-09-01 12:07:50
【问题描述】:

我正在使用 Mac 尝试解码类似的简单行

$var='doc_input'
$textToChange='<div> <doc_input/> &lt/div>' 
echo $textToChange | sed -e s=\&lt\;$var\/\&gt\;=\<$var\/\>=g

&lt;div&gt; <doc_input/> &lt;/div&gt;

它会起作用的。结果必须与编码和解码的实体混合在一起。

但是,如果我尝试将其写入文件中,它将无法正常工作。文件 a.txt 包含文本。

sed -e s=\&lt\;$var\/\&gt\;=\<$var\/\>=g a.txt > c.txt

输出与输入相同。 请问我该怎么做?

【问题讨论】:

  • 有人对我有意见吗?
  • 你能用sed -f mysedScript a.txt &gt; c.txt这个表格吗?如果是,请尝试 echo "s=\&amp;lt\;$var\/\&amp;gt\;=\&lt;$var\/\&gt;=g" &gt; mysedScript 。它对我有用。否则编辑您的 Q 以显示 sed --version ; echo BASH_VERSION=$BASH_VERSION 的输出。祝你好运。
  • 但是,我同意使用xmlstarlet 或其他合适的编辑器的建议(现在不见了)。您可以使用 sed 解决您当前的问题,但现在您的老板会认为 sed 始终是正确的解决方案,“为什么这需要这么长时间,为什么它不能解决特殊情况 Y 或 Z!?” :-) 好的?祝你好运!

标签: awk sed terminal entities


【解决方案1】:

我没有找到使用 sed 将外部文件

解决办法是:

perl -pi -e 's/[&]{1}[l]{1}[t]{1}[;]{1}/$1</g' ./tmp.txt
perl -pi -e 's/[&]{1}[l]{1}[g]{1}[;]{1}/$1>/g' ./tmp.txt

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 2010-11-15
    • 2012-04-16
    • 1970-01-01
    • 2016-03-13
    • 2011-04-07
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多