2016-04-12 71 views
-1

功率我有一个程序,给我造成了科学蟒蛇格式,如:如何提取的十个结果用grep命令(bash)的

10.0889E-002 

例如。

我想使用grep命令(或awk)来提取这个结果,但我没有找到正确对待这个“E-002”的方法。相应的结果WITHOUT E-002(但会计)将存储在一个变量中,以便我可以用其他变量和数字进行所有类型的操作。

我想我应该明显更好地使用python,但我现在搜索一个快速和肮脏的解决方案。

例子:

比方说,我有一个文件名刚刚有一个包含一条线:

10.0889E-002 

或任意数量的这种表示法。

我想把这个变成bash中的一个变量,但没有十个符号的功能。在myfile.sh:

a=`grep '' filename | awk '{print $1}'` 

但这并不占E-002,这样我可以做所有类型的操作与我的变量。

+1

我不明白。你能向我们展示一些试图实现你的想法的代码,然后向我们展示你的预期结果和你实际得到的结果吗? [MCVE](http://stackoverflow.com/help/mcve)总能帮助改善问题。 – ghoti

回答

2

awk可以解释,只是罚款:

$ echo '10.0889E-002' | awk '{ print $1+0 }' 
> 0.100889 
+0

谢谢,我不知道这个awk的+0选项 –

+1

你不需要这个,它只是一种使用数字的不同表示来强制'awk'的方法。 – pfnuesel

+1

@B_runo我现在看到你编辑的问题。在这种情况下,'+ 0'正是你所需要的,我想。 – pfnuesel

2

用printf

$ printf "%f\n" 10.0889E-002 
0.100889 
-1

喜欢的东西

-?\d*\.?\d+[eE]?-?\d*