sed替换XML文件中的文本

sed替换XML文件中的文本,sed,Sed,我有一个巨大的XML文件,其中包含如下数据: <amount quantity="1">12.00</amount> 12.00 如何使用sed将12.00替换为其他值?在您的问题中没有足够的信息,但要将12.00的所有值替换为say24.00,您可以执行以下操作: $ sed 's/>12\.00</>24.00</g' file.xml 一个更具挑战性的匹配是: $ sed -r 's_(<amount quantity="[0-9

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

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

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

在您的问题中没有足够的信息,但要将
12.00
的所有值替换为say
24.00
,您可以执行以下操作:

$ sed 's/>12\.00</>24.00</g' file.xml
一个更具挑战性的匹配是:

$ sed -r 's_(<amount quantity="[0-9]+">)12.00(</amount>)_\124.00\2_g' file.xml
$sed-r's_u()12.00()\124.00\2_g'file.xml
但是您应该真正正确地解析XML,而不是强迫regexp执行它不是为之设计的

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"
#/bin/bash
xml=“12.00”

newxml=`echo$xml|sed-n“s/\(]*>\)\([^我打算建议使用结束标记
来定义搜索模式,当然要遵循
12.00
。这样可以避免12.00出现在其他上下文中的问题。@hardmath可能会更好,但由于OP提供的信息很少,所以无法确定。而
sed
对于ma来说是一个非常灵活的工具ny文本文件操作,特别是与其他管道启用shell命令相结合,对于快速而肮脏的XSLT传递来说,这似乎是一个更好的任务。
#!/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>