2016-04-12 70 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*