2013-04-08 114 views
0

文本我有這樣的數據巨大的XML文件:SED替換一個XML文件

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

我該怎麼用別的東西代替使用12.00 SED?

+0

雖然'sed'是許多文本文件的操作非常靈活的工具,ESP。與其他支持管道的shell命令結合使用,對於快速而骯髒的XSLT傳遞而言,這似乎是一個更好的任務。 – hardmath 2013-04-08 15:35:36

回答

1
在你的問題

不是真的足夠的信息,但有說24.00你可以做替代的12.00所有值:

$ sed 's/>12\.00</>24.00</g' file.xml 

如果您對結果感到滿意,你可以使用-i選項並將其存儲回:

$ sed -i 's/>12\.00</>24.00</g' file.xml 

更rubust比賽將是:

$ sed -r 's_(<amount quantity="[0-9]+">)12.00(</amount>)_\124.00\2_g' file.xml 

但是,你應該真正地解析XML,而不是強制regexp去做一些它沒有設計的東西。

+0

我打算建議使用結束標記''來定義搜索模式,當然後面是'12.00'。這可以避免出現在其他情況下的問題。 – hardmath 2013-04-08 14:39:31

+0

@hardmath可能會更好,但由於OP提供的信息很少,所以不可能說。 – 2013-04-08 14:41:23

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>