更改sed语句中字符串的格式

时间:2013-11-25 18:58:44

标签: bash sed

我有一个看起来像这样的字符串:

<cell decimals="3" number="0.99916218350572" text=",999"/>

我希望将其更改为

<cell decimals="3" number="9.991622E-01" text=",999"/>

我是bash的新手。经过研究和实验,我已经完成了

cat myXMLfile | sed "s/\(number\=\)\(\"[0-9]*[\.\][0-9]*[\-]*e*\-*[0-9]*\)/number\=\2/g"

但是\ 2不是格式化的值。我希望将\ 2中存储的值格式化为“printf%.6E”。

对不起我在这方面的无知,并提前感谢帮助我了解更多信息。

1 个答案:

答案 0 :(得分:1)

使用awk:

> s='<cell decimals="3" number="0.99916218350572" text=",999"/>'
> awk -F '"' '{$4=sprintf("%.6E", $4)} 1' OFS='"' <<< "$s"
<cell decimals="3" number="9.991622E-01" text=",999"/>