Awk - imprime o próximo registro seguindo o registro correspondente
Eu estou tentando obter um próximo campo após o campo correspondente usando o awk.
Existe uma opção para fazer isso ou eu preciso digitalizar o registro em array, em seguida, verificar cada campo no array e imprimi-lo depois disso?
O que eu tenho até agora:
O formato do arquivo é:
<FIELD><separator "1"><VALUE><separator "1"><FIELD><separator "1"><VALUE>
... e assim por diante,field|value
os pares são repetidos, será pelo menos um par em linha ou vários pares <10 por linha
dat.txt:
FIELDA01VALUEA01FIELDA21VALUEA21FIELDA31VALUEA3
FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3
FIELDC01VALUEC01FIELDC21VALUEC21FIELDC31VALUEC3
FIELDD01VALUED01FIELDD21VALUED21FIELDD31VALUED3
FIELDE01VALUEE01FIELDE21VALUEE21FIELDE31VALUEE3
Com o script awk simples que imprime o segundo campo em uma linha correspondente ao FIELDB2:
#!/bin/awk -f
BEGIN { FS = "1" }
/FIELDB2/ { print $2 }
Executando o acima:
> ./scrpt.awk dat.txt
Me dá:
VALUEB0
Isso é porque a linha que corresponde:
FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3
Quando dividido em registros parece:
FIELDB0 VALUEB0 FIELDB2 VALUEB2 FIELDB3 VALUEB3
Da qual o segundo campo éVALUEB0
Agora eu não sei qualFIELDXX
vai corresponder, mas eu gostaria de imprimir o próximo registro na linha depoisFIELDXX
que combinou, neste exemplo específico, quandoFIELDB2
corresponde eu preciso imprimirVALUEB2
.
Alguma sugestão?