【问题标题】:How to replace a string having special characters in xml file by unix commands如何通过unix命令替换xml文件中具有特殊字符的字符串
【发布时间】:2017-12-28 06:36:03
【问题描述】:

我需要用 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"。所以不能删除行

【问题讨论】:

  • 添加一个完整的示例输入行并使用您尝试过的命令获得输出......另外,可能像 xmlstarlet 这样的 xml 解析器会比使用正则表达式更好
  • 要编辑您的文件,请尝试使用-i 标志:sed -i

标签: xml unix sed


【解决方案1】:

您的sed 线路运行良好,但是:

  1. 要就地编辑文件而不是将结果写入标准输出,请使用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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2020-11-04
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多