作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我有一个包含 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 亿行,所有列都具有科学记数法的值是未知的)。
我需要将科学计数法中的值转换成相应的十进制形式。我遇到了以下解决方案: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
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!