Linux
將Linux中文件中的所有指數數轉換為十進制數?
我已經檢查了與此相關的所有以前的文章,但我找不到我想做的方式。
我有一個包含一些指數數字的文件,如下所示。我不知道哪些列有指數數。
文件1.txt
1 499 5e-29 0.33 1.35 46.65 5 999 0.4444 3e-6 0.556 89.444 many more lines
我想將所有指數數轉換為十進制數。
如果我只想轉換一個數字,我可以執行以下操作。
echo 12.34567E-3 | awk '{printf "%5.10f\n", $1}'
但是這樣,有沒有人知道怎麼做?
先感謝您!
您可以循環訪問每行的所有欄位。測試欄位是否為數值 (
$i+0==$i
) 和 (&&
) 是否包含字元e
似乎很好。所以我們只修改這些欄位為小數。這裡使用 GNU awk
sprintf
函式:awk '{ for (i=1;i<=NF;i++) if ($i+0 == $i && $i ~ /e/) $i = sprintf("%.10f", $i) } 1' file
- 您可以使用任何格式而不是
.10f
進入那裡。1
最後表示預設操作,到