我有一个巨大的 XML 文件,其中包含如下数据:
<amount quantity="1">12.00</amount>
如何使用 sed 将 12.00 替换为其他版本?
您的问题中没有足够的信息,但是12.00
用24.00
您可以做的替换所有值:
$ sed 's/>12\.00</>24.00</g' file.xml
如果您对结果感到满意,您可以使用以下-i
选项将它们存储回来:
$ sed -i 's/>12\.00</>24.00</g' file.xml
一个更强大的匹配将是:
$ sed -r 's_(<amount quantity="[0-9]+">)12.00(</amount>)_\124.00\2_g' file.xml
但是您应该真正正确地解析 XML,而不是强制正则表达式做一些它不是为之设计的事情。
脚本.sh:
#!/bin/bash
xml="<amount quantity="1">12.00</amount>"
newxml=`echo $xml | sed -n "s/\(<amount[^>]*>\)\([^<]*\)\(<\/amount>\)/\113.37\3/gp"`
echo "$newxml"
结果:
$ ./script.sh
<amount quantity=1>13.37</amount>