Pregunta

Hola chicos Tengo las siguientes líneas:

A=3.5e30
B=4.345e40

(archivo contiene columnas con números en esta notación 1.2345678d + 10)

sed 's/D/E/g' File | awk '{print $1, $6*'$A', 10^($9)*'$B', $13, $8}' > File2

La salida que estoy recibiendo es:

3.168808781403E+02 29825999184755995994350665720659968 71343531834366140263241767594070376448 ... etc

¿Cómo puedo tener la 2ª y 3ª columna con la misma notación que en la primera columna?I.E,

en lugar de tener: 71343531834366140263241767594070376448

quiero: 7.134353183436E+37

Solo para hacerle saber la respuesta es:

 sed 's/D/E/g' File | awk '{printf "%.12E %.12E %.12E %.12E %.12E\n", $1, $6*'$A', 10^($9)*'$B', $13,$8 }' > File2

¿Fue útil?

Solución

Si desea la llamada notación científica, utilice el especificador de formato PRIMF y GENACODICETAGOTEGODEGOTE.

Ejemplo:

echo 71343531834366140263241767594070376448 | awk '{printf "%E",$1}' 

Salida:

7.134353E+37

Otros consejos

awk 'BEGIN { printf("%E\n", 71343531834366140263241767594070376448); }'
7.134353E+37

Simplemente use printf() en lugar de print():

$ awk 'BEGIN { printf "%e\n", 282048204209482034890 }' /dev/null
2.820482e+20

Hay un par de problemas que necesita para arreglar en sus códigos:

  • Uso de shell var en AWK:

    awk -v awkVar1="$A" -v awkVar2="$B" ... '{use awkVar1 without $}' file
    
  • Para obtener un formato de notación científica, necesita definir el formato con printf, uno de %E, %e, %g, %G sería útil para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top