我可以帮助您进行翻译。以下是需要翻译的内容:
但是上述脚本对我来说无效。上述脚本返回我的输入文件,没有进行任何转换(对于E+值和E-值)。我对shell脚本还比较陌生,有什么想法吗?
我以这种形式执行脚本:
我有一个包含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....
正如您所看到的,一些字段的值是科学计数法表示的(考虑到CSV文件具有50亿行,不知道所有列的值是否都是以科学计数法表示)。
我需要将科学计数法表示的值转换为相应的十进制形式。 我找到了以下解决方案:在多个字段中将科学计数法转换为十进制 并获得了以下代码:
#!/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