awk: wyświetl dopasowane wyrażenie regularne (multiline)

Mam plik, który wygląda tak:

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...

Plik składa się z bloków rozpoczynających się odSF: ... i kończąc naend_of_record. Zauważ, że liczba linii między (DA:x,x) może być inny. Chcę wydrukować wszystkie bloki, które mają test „String” w pierwszym wierszu (np. „SF: / home / developer /test/ resources / ... "tutaj. W tym przykładzie moim poszukiwanym wyjściem będzie:

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

Chcę to zrobić naLinux środowisko.

Moja pierwsza próba polegała na użyciu polecenia „sed”, ale po kilku badaniach wydawało się, że „awk” jest bardziej odpowiednim narzędziem do wykonywania operacji wielowierszowych.

Używając awk i Regex, jest to polecenie, które mam do tej pory:

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

Ale wydaje pełneexamplefile, nie tylko bloki zawierające „test” w pierwszym wierszu. Nie jestem pewien, czy mój Regex jest zły, czy też czegoś brakuje w moimawk połączenie.

Jak mogę uzyskać tylko blok z „testem” w pierwszej linii?