Awk - Druckt den nächsten Datensatz nach dem übereinstimmenden Datensatz

Ich versuche mit awk ein nächstes Feld zu bekommen, nachdem ich es gefunden habe.

Gibt es eine Option, um dies zu tun, oder muss ich den Datensatz in ein Array einscannen, dann jedes Feld in einem Array markieren und das darauf folgende drucken?

Was ich bisher habe:

Das Dateiformat ist:

<FIELD><separator "1"><VALUE><separator "1"><FIELD><separator "1"><VALUE> 

... und so weiter,field|value Paare werden wiederholt, mindestens ein Paar in einer Zeile oder mehrere Paare <10 pro Zeile

dat.txt:

FIELDA01VALUEA01FIELDA21VALUEA21FIELDA31VALUEA3
FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3
FIELDC01VALUEC01FIELDC21VALUEC21FIELDC31VALUEC3
FIELDD01VALUED01FIELDD21VALUED21FIELDD31VALUED3
FIELDE01VALUEE01FIELDE21VALUEE21FIELDE31VALUEE3

Mit einem einfachen awk-Skript, das das zweite Feld in einer Zeile ausgibt, die mit FIELDB2 übereinstimmt:

#!/bin/awk -f

BEGIN { FS = "1" }
/FIELDB2/ { print $2 }

Ausführen des oben genannten:

> ./scrpt.awk dat.txt

Gibt mir:

VALUEB0

Dies liegt daran, dass die Zeile, die übereinstimmt:

FIELDB01VALUEB01FIELDB21VALUEB21FIELDB31VALUEB3

Wenn aufgeteilt in Datensätze aussieht:

FIELDB0 VALUEB0 FIELDB2 VALUEB2 FIELDB3 VALUEB3

Von dem das zweite Feld istVALUEB0

Jetzt weiß ich nicht wasFIELDXX wird übereinstimmen, aber ich möchte den nächsten Datensatz in der Zeile danach druckenFIELDXX das stimmte überein, in diesem speziellen Beispiel wennFIELDB2 Streichhölzer muss ich ausdruckenVALUEB2.

Irgendwelche Vorschläge?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage