awk: Matched Regex anzeigen (mehrzeilig)

Ich habe eine Datei, die so aussieht:

SF:/home/developer/project/test/resources/somefile.js
DA:1,2
DA:3,2
end_of_record
SF:/home/developer/project/src/resources/otherfile.js
DA:9,2
DA:15,2
DA:22,2
end_of_record

...some more SF:/home/xxx and end_of_record lines...

Die Datei besteht aus Blöcken, die mit beginnenSF: ... und endend mitend_of_record. Beachten Sie, dass die Anzahl der Zeilen zwischen (DA:x,x) kann unterschiedlich sein. Ich möchte alle Blöcke drucken, die den String "test" in der ersten Zeile haben (wie "SF: / home / developer /Prüfung/ resources / ... "hier). Für dieses Beispiel wäre meine gewünschte Ausgabe:

SF:/home/developer/project/test/resources/somefile.js
DA:1,2
DA:3,2
end_of_record

Ich möchte dies auf einem tunLinux Umgebung.

Mein erster Versuch war, dies mit dem Befehl "sed" zu tun, aber nach einigen Recherchen schien "awk" ein geeigneteres Werkzeug für mehrzeilige Operationen zu sein.

Mit awk und Regex ist dies der Befehl, den ich bisher habe:

awk '/SF[:\/a-zA-Z0-9]*test[\/A-Za-z0-9.,:\n]*end_of_record/ {print}' FS="\n" RS="" examplefile

Aber es gibt das volle ausexamplefile, nicht nur die Blöcke, die "test" in der ersten Zeile enthalten. Ich bin mir nicht sicher, ob mein Regex falsch ist oder ob mir etwas in meinem fehltawk Anruf.

Wie kann ich nur den Block mit "test" in der ersten Zeile bekommen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage