2012-04-10 19 views
1

にゼロを削除する方法:私はいくつかの数字、このような何かを持っている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は1行であり、そして私は正規表現をテストしています

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 

ので、私はインストールすることはできません。任意のライブラリまたはプログラムであるため、シェルのみが許可されます。

ありがとうございました。

+0

ゼロを除去する利点は何ですか? –

+1

あなたは従来のものより "他の左"を意味しますか? –

+0

結果を '3.000'にしたいのですが、' 3.0'または '3'(浮動小数点型から整数型への暗黙的な型変更を引き起こす可能性があります。 –

答えて

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> 
+0

あなたの答えをありがとう!最初のオプションを試しましたが、rが違法なオプションであることがわかります。私が試したときの質問 echo "3.1000" | sed -e 's/\(\。[1-9] \ + \)0 */\ 1/g' -e '/ \。0 \ + //' しかし、それは私に同じ文字列を与えます。なぜなのかご存知ですか? – StrayChild01

+0

@ StrayChild01 '-r'オプションはあなたのためには動作しないので削除しました。現在の正規表現を試してみてください。最初の式が一致しないように、カッコがエスケープされていないため、同じ文字列を使用しています。 –

+0

ねえ、私はこの例で表現を試してみましたが、同じ内容を私に見せています。私は何か間違っているかもしれない?それはSolaris 5.9です。 – StrayChild01

0

あなたがこれを行うことができます:

sed '{ 
s/\.00*</</g 
s/00*</</g 
}' xmlFile.xml 
+0

こんにちは、私はあなたの答えを試して、それは私にメッセージを言う: コマンドが文字化けした。 – StrayChild01

関連する問題