0

我有一个巨大的 XML 文件,其中包含如下数据:

<amount quantity="1">12.00</amount>

如何使用 sed 将 12.00 替换为其他版本?

4

2 回答 2

1

您的问题中没有足够的信息,但是12.0024.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,而不是强制正则表达式做一些它不是为之设计的事情。

于 2013-04-08T14:35:21.807 回答
0

脚本.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>
于 2013-04-08T14:47:51.680 回答