Usando seu arquivo de exemplo, repetido três vezes seguidas com modificações:
Record: XXXXXX [
{variable number of lines and content}
Start to do this thing
]
Record: YYYYYY [
{variable number of lines and content}
Stop doing this thing
]
Record: ZZZZZZ [
{variable number of lines and content}
Start again
]
Então:
$ awk '/^Record:/ { r = $2 } /^Start/ { print r ":", $0 }' file
XXXXXX: Start to do this thing
ZZZZZZ: Start again
Simplesmente selecionamos o número / rótulo do registro assim que vemos uma linha começando com Record:
e a salvamos na variável r
. Então, quando encontrarmos uma linha que começa com Start
, imprimimos qualquer selo que tenhamos encontrado e a linha.
Se a linha não iniciar com Start
, talvez seja necessário alterar a expressão regular de /^Start/
para /^ *Start/
, o que permitirá qualquer número de espaços entre a palavra e o início da linha.
Isso falhará se houver outras coisas no arquivo entre os registros que correspondem a Start
.