Supondo que os dados sejam estruturados para que seja sempre a linha antes e depois do desejado, você pode usar os switches grep -A
(after) e -B
(before) para dizer para incluir a 1 linha antes da partida e 1 linha depois:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Se você deseja as mesmas linhas numéricas antes e depois do termo de pesquisa, pode usar a opção -C
(context):
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Se você deseja ser mais rigoroso ao corresponder às várias linhas, pode usar a ferramenta pcregrep
, para corresponder a um padrão em várias linhas:
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
O padrão acima corresponde da seguinte forma:
-M
- várias linhas
'Pseudo.*\n.*42B.*\nstate.*'
- corresponde a um grupo de cadeias de caracteres em que a primeira cadeia começa com a palavra "Pseudo"
seguida por qualquer caractere até o final da linha \n
, seguida de qualquer caractere até a sequência "42B"
seguida de qualquer caractere até outro final da linha ( \n
), seguida pela sequência "state"
seguido por qualquer caractere.