2015-10-18 59 views
-1

我有這樣一個文本文件,兩列數字:如何指數值轉換爲十進制值用vim

0.00000000E+00 0.66244638E+00 
0.10000000E+01 0.66630906E+00 
0.20000000E+01 0.66920608E+00 
0.30000000E+01 0.67210299E+00 

...

0.59600000E+03 0.66341203E+02 
0.59700000E+03 0.66824037E+02 
0.59800000E+03 0.67403436E+02 
0.59900000E+03 0.67886269E+02 
0.60000000E+03 0.68369102E+02 

我怎麼能值轉換爲十進制值與vim

結果:

0.0 0.66244638 
1.0 0.66630906 

...

599.0 67.886269 
600.0 68.369102 

謝謝

回答

1

一種方式做到這一點,在Vim:

:%s/\v(\d+\.\d+E[+-]\d+)\s+(\d+\.\d+E[+-]\d+)/\=printf("%.1f\t%.8f", str2float(submatch(1)), str2float(submatch(2)))/ 

這需要一個版本Vim編譯爲+float

理智/智能/容易/快速的方法來做到這一點,外面的Vim:

awk '{ printf("%.1f\t%.8f\n", $1, $2) }' file.txt 
+0

好的,謝謝。我認爲awk看起來更清楚:-) – Genschman

相關問題