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
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