Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Lucas Lodeiro en 23 Marzo 2018, 18:53 pm



Título: Dudas en modificación de columnas AWK
Publicado por: Lucas Lodeiro en 23 Marzo 2018, 18:53 pm
Hola! Tengo un archivo capa2da.dat de varias filas (muchas) del tipo:

H 2.123456789 3.12456789 4.123456789 0 0 0

Necesito incluir en un script un comando que me altere la 4° columna restando una variable definida ya previamente en el shell, y las otras queden sin alterarse. Primero probe en modificar la 4° columna solamente con;

awk -v CTECRYSTAL="${CTECRYSTAL}" '{printf "%12.9f\n",$4-CTECRYSTAL}' capa2da.dat > capa2daZ.dat

Logre asi que hiciera la resta correctamente, pero solo obtengo la 4° columna, intente añadiendo las demas columnas sin alterar, asi:

awk -v CTECRYSTAL="${CTECRYSTAL}" '{printf "%12.9f\n",$1,$2,$3,$4-CTECRYSTAL,$5,$6,$7}' capa2da.dat > capa2daZ.dat

Pero me da error porque la primera columna no tiene la cantidad de caracteres suficientes, pero requiero que la columna 2 3 y 4 tengan dicha cantidad de caracteres. Tambien probe con:

awk -v CTECRYSTAL="${CTECRYSTAL}" '{print "\n",$1,$2,$3}{printf "%12.9f\n",$4-CTECRYSTAL}{print "\n",$5,$6,$7}' capa2da.dat > capa2daZ.dat

Con esto imprime todo lo que requiero, pero no respeta las filas... cada fila del input se transforma en 3 filas:

H 2.123456789 3.12456789
4.123456789 (alterada por la resta)
0 0 0

¿Alguien sabe como puedo arreglar eso en AWK, o con otros comandos de bash?

Saludos y gracias