Awk - imprimir el siguiente registro siguiente registro coincidente
Estoy tratando de obtener un campo siguiente después de hacer coincidir el campo usando awk.
¿Hay una opción para hacer eso o necesito escanear el registro en una matriz y luego revisar cada campo en la matriz e imprimir el que está después?
Lo que tengo hasta ahora:
El formato del archivo es:
<FIELD><separator "1"><VALUE><separator "1"><FIELD><separator "1"><VALUE>
... y así,field|value
los pares se repiten, habrá al menos un par en línea o varios pares <10 por línea
dat.txt:
FIELDA01VALUEA01FIELDA21VALUEA21FIELDA31VALUEA3
FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3
FIELDC01VALUEC01FIELDC21VALUEC21FIELDC31VALUEC3
FIELDD01VALUED01FIELDD21VALUED21FIELDD31VALUED3
FIELDE01VALUEE01FIELDE21VALUEE21FIELDE31VALUEE3
Con el script awk simple que imprime el segundo campo en una línea que coincide con FIELDB2:
#!/bin/awk -f
BEGIN { FS = "1" }
/FIELDB2/ { print $2 }
Ejecutando lo anterior:
> ./scrpt.awk dat.txt
Me da:
VALUEB0
Esto se debe a que la línea que coincide:
FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3
Cuando se divide en registros se ve:
FIELDB0 VALUEB0 FIELDB2 VALUEB2 FIELDB3 VALUEB3
De donde es el segundo campoVALUEB0
Ahora no se cualFIELDXX
coincidirá, pero me gustaría imprimir el siguiente registro en la línea después deFIELDXX
que coincidió, en este ejemplo específico cuandoFIELDB2
coincidencias que necesito para imprimirVALUEB2
.
¿Alguna sugerencia?