Esta questão é uma variação de Como faço para grep para múltiplos padrões em múltiplas linhas?
Este é o texto de exemplo onde as linhas contendo "reqId: regexpat" ou "reqCompleted: regexpat" devem ser combinadas em pares onde 'regexpat' é único, na verdade, pode ser um UUID.
2016-09-27 GET /some/uri - reqId: 000-pat1-bgr, more text
2016-09-27 GET /some/uri - reqId: 0.215487, your favourite song
2016-09-27 irrelevant message
2016-09-27 ignored record
2016-09-27 reqCompleted: 999-xxx-vvv, ignore this
2016-09-27 reqCompleted: 0.215487, more characters
2016-09-27 reqCompleted: 000-pat1-bgr, more characters
2016-09-27 another lost message
O resultado esperado deve ser
2016-09-27 GET /some/uri - reqId: 000-pat1-bgr, more text
2016-09-27 GET /some/uri - reqId: 0.215487, your favourite song
2016-09-27 reqCompleted: 0.215487, more characters
2016-09-27 reqCompleted: 000-pat1-bgr, more characters
000-pat1-bgr e 0.215487 são identificadores exclusivos. Eu tentei grep com suporte perl-regex
grep --null-data --only-matching --perl-regex '(?s)^\N+ RequestId:, \N+$\n(?:.*)^\N+ reqCompleted: ([a-z0-9\.-]+), .\N+$\n'
Mas isso é o que eu recebo
2016-09-27 GET /some/uri - reqId: 000-pat1-bgr, more text
2016-09-27 GET /some/uri - reqId: 0.215487, your favourite song
2016-09-27 irrelevant message
2016-09-27 ignored record
2016-09-27 reqCompleted: 999-xxx-vvv, ignore this
2016-09-27 reqCompleted: 0.215487, more characters
2016-09-27 reqCompleted: 000-pat1-bgr, more characters
É possível conseguir isso com um comando greer de liner?