爲十進制我有150列,其中樣品的下面::轉換科學記數法中的csv
id,c1,c2,c3,c4,c5...
1,0,acc,123.4E+03,0,bdd,...
2,1.299E-05,bef,1.666E-08,23,ghh....
給出爲u可以看到一些字段具有在科學記數法的值大的csv文件(其考慮到csv文件已超過50億行),所有列都有科學記號中的值是未知的。
我需要將科學記數法中的值轉換爲其對應的小數形式。 我遇到了以下解決方案:Convert scientific notation to decimal in multiple fields並獲得下面的代碼:
#!/usr/bin/awk -f
BEGIN {
d = "[[:digit:]]"
OFS = FS = ","
}
{
delim = ""
for (i = 1; i <= NF; i++) {
if ($i ~ d "E+" d d d "$") {
printf "%s%.41f", delim, $i
}
else {
printf "%s%s", delim, $i
}
delim = OFS
}
printf "\n"
}
但上面的腳本是不是爲我工作。上面的腳本按原樣返回我的輸入文件(對於E +值和E-值),無需轉換。我對shell腳本相當陌生,有什麼想法?
我執行腳本以這種形式:
chmod u+x awkscript.awk
./awkscript.awk inputfile.csv
如果因爲重複而關閉,請至少將'CONVFMT'解決方案複製到上面鏈接的文章中。 –
csv從哪裏來? Excel xlsx,數據庫?也許你可以改變單元格格式或導出選項,避免數字格式。你甚至可能贏得額外的精度。 –