sed替换XML文件中的文本

时间:2013-04-08 14:32:21

标签: sed

我有大量的XML文件,其数据如下:

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

如何用sed用其他东西替换12.00?

2 个答案:

答案 0 :(得分:1)

您的问题中的信息不够,但要用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而不是强制regexp做一些不是为它设计的东西。

答案 1 :(得分:0)

script.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>