我有一个有几个数字的xml,如下所示:
<xml>
<case1>
<amount>3.140000</amount>
<amount2>3.0000</amount2>
<detail>
<name>something</name>
<earning>3.1000</earning>
</detail>
</case1>
<case2>
<amount>3.10000</amount>
</case2>
xml在一行中,我正在使用这样的正则表达式进行测试:
echo "433.000" | sed -e 's/\([0-9]*\.\)\([1-9]*\)\(0*\)/\1\2/g'
但它给了我3.00的东西。我不是要解析任何东西,只需删除零。不知何故,当我尝试使用它时,它什么都不做:
sed -e 's/\([0-9]*\.\)\([1-9]*\)\(0*\)/\1\2/g' xmlFile.xml
我必须提到我对正则表达式并不好,而且我在托管服务器上,因此我无法安装任何库或程序,因此只允许使用shell。 / p>
感谢。
答案 0 :(得分:0)
以下内容应该有效:
sed -e 's/\(\.[1-9][1-9]*\)0*/\1/g' -e 's/\.00*//' xmlFile.xml
这将产生以下结果:
<xml>
<case1>
<amount>3.14</amount>
<amount2>3</amount2>
<detail>
<name>something</name>
<earning>3.1</earning>
</detail>
</case1>
<case2>
<amount>3.1</amount>
</case2>
答案 1 :(得分:0)
你可以这样做:
sed '{
s/\.00*</</g
s/00*</</g
}' xmlFile.xml