如何用unix命令替换xml文件中包含特殊字符的字符串

时间:2017-07-22 04:31:43

标签: xml unix sed

我需要用null替换下面的字符串。它基本上是一个xml文件,我想使用unix命令省略xmnls部分。

xmlns:stl="http://www.xxx.yy/1234/stl-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

我尝试过使用以下命令:

perl -pi -e "s+xmlns:stl="http://www.xxx.yy/1234/stl-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"++" filename.xml

sed 's+xmlns:stl="http://www.xxx.yy/1234/stl-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"++' filename.xml

没有成功。 :( 专家们是否知道如何处理这个问题。

PS:它是一个连续的行,在字符串后面有标签  价值xmlns:stl="http://www.xxx.yy/1234/stl-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。所以无法删除行

1 个答案:

答案 0 :(得分:1)

您的sed行运行得相当不错,但是:

  1. 要编辑文件而不是将结果写入stdout,请使用sed -i
  2. 要使其可预测,您需要使用\转义正则表达式特殊字符,如下所示:

    sed -i 's+xmlns:stl="http://www\.xxx\.yy/1234/stl-1\.0" xmlns:xsi="http://www\.w3\.org/2001/XMLSchema-instance"++' filename.xml