我想匹配输入中的所有浮点数,并用不同格式的浮点数替换它们。
这是我尝试过的东西:
echo "123.45E+00 blah 678.90E+00 blah 3.1415926535897932E+0000" \
| awk '{gsub(/[0-9]+\.[0-9]+\E\+[0-9]+/,sprintf("%E","&")); print $0}'
不幸的是,"&"
sprintf 中的 是一个字符串而不是一个数字,所以结果是:
0.000000E+00 blah 0.000000E+00 blah 0.000000E+00
那是我想要的数字格式,但使用"&"
导致零作为参数的值,而不是匹配的数字。
更改"%E"
格式以"%s"
返回原始字符串。
我想要上述输入的输出是:
1.234500E+02 blah 6.789000E+02 blah 3.141593E+00