Guardar variable entre llamadas encadenadas con pipes a awk
Publicado: 30 Junio, 2010 - 16:48 Guardar variable entre llamadas encadenadas con pipes a awk
Hola, se me plantea la siguiente duda:
Tene mos un fichero estructurado en columnas, por ejemplo 3
entrada1 x1 y1 z1
entrada2 x2 y2 z2
entradaN xn yn znImaginemos que hay que modificar las columnas tercera y cuarta con un programa y escribir en un fichero final las dos primeras columnas originales y las tercera y cuarta modificadas. El problema es que el programa que modifica las columnas tercera y cuarta sólo admite dos argumentos de entrada y no puedo hacer algo del tipo
cat fichero | awk '{print $3,$4}' | programa > ficheroFinalporque perdería las información de las dos primeras columnas. ¿Hay alguna manera de hacer (en una sólo llamada desde la línea de comandos) algo del estilo de
cat fichero | awk '{(guardar $1 y $2 an A y B) print $3,$4}' | programa | awk '{print $A,$B,$1,$2}' > ficheroFinaldonde $1 y $2 de la segunda llamada a awk es la salida de programa?
- Inicie sesión o regístrese para enviar comentarios
- 371 lecturas


Lo de compartir las variables entre distintas ejecuciones no se puede. Lo que se me ocurre, asumiendo que "programa" solo puede recibir la información por entrada estándar.
awk '{"echo " $3 " " $4 "|" programa|getline procesado; print procesado, $1, $2}' fichero > ficheroFinalOtra solución menos elegante podría ser usar un fichero intermedio, aunque no creo que sea necesario.
Saludos