Convertir notación científica a decimal en csv [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Convertir notación científica a decimal en múltiples campos 2 respuestasTengo un gran archivo csv con 150 columnas, una muestra de las cuales se muestra a continuación:
id,c1,c2,c3,c4,c5...
1,0,acc,123.4E+03,0,bdd,...
2,1.299E-05,bef,1.666E-08,23,ghh....
Como puede ver, algunos campos tienen valores en anotaciones científicas (no se conoce qué columnas tienen valores en anotaciones científicas dado que el archivo csv tiene más de 5 mil millones de filas).
Necesito convertir los valores en anotaciones científicas a su forma decimal correspondiente. Encontré la siguiente solución:Convertir notación científica a decimal en múltiples campos y obtuve el siguiente código:
#!/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"
}
Pero el script anterior no funciona para mí. El script anterior devuelve mi archivo de entrada tal como está (para valores E + y para valores E) sin conversión. Soy bastante nuevo en los scripts de shell, ¿alguna idea?
Estoy ejecutando el script de esta forma:
chmod u+x awkscript.awk
./awkscript.awk inputfile.csv