/ / Como grep para a linha abaixo de outro e acima (ou entre) - linux, unix, aix

Como grep para linha abaixo de outro e acima (ou entre) - linux, unix, aix

Eu gostaria de grep para uma linha que contém o número 638.

O arquivo de saída contém o texto abaixo:

Please label this tape as number 1 in the arc tape sequence.

This tape contains the following logical logs:

638

Program over.
Done at Tue 25 Oct 2016 11:34:07 GMT

Meu objetivo é buscar o número 638. Observe que o número pode variar entre os sistemas. Eu gostaria de grep a próxima linha após o texto "Esta fita contém os seguintes logs lógicos:" para imprimir a linha de número desejada 638 ou grep acima "Program over". para obter 638.

Eu tentei o abaixo e não funciona:

grep -A "This tape contains the following logical logs" filename |
grep -B 1 "Program over." | grep -v "Program over."

Grep -A e grep -B não funciona por algum motivo.

Eu recebi a seguinte mensagem de erro:

grep: Not a recognized flag: A

Existe um awk comando que pode ser usado para isso?

Respostas:

1 para resposta № 1
sed -n "/logical/{n;n;p;}" ontape-level0.out

0 para resposta № 2

-A (para depois) e -B (para antes) requerem um argumento numérico como explicado na página man. tal como:

grep -B 1 -A 2 "This tape contains the following logical logs" filename

Isso irá influenciar o bloco que você mencionou.


0 para resposta № 3

Isso funciona para mim:

sed -n "/ Esta fita contém os seguintes logs lógicos: / {n; n; p;}" ontape-level0.out "