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 № 1sed -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 "