Grep / sed / awk ou puxe certas informações em um arquivo usando os comandos regex / linux

0

Eu tenho um arquivo com esta saída e estou tentando coletar dados úteis do meu arquivo.

R1#show ip route 192.168.5.130
Routing Descriptor Blocks:

  * 192.168.5.128, from 192.168.5.162, 00:20:16 ago, via Serial0/0/0.2

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit/sec

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

Eu quero o grep match se o meu parágrafo acima tiver a palavra "métrica", então ele deve exibir o parágrafo inteiro e não apenas a linha.

Existe também uma forma de verificar a condição de que se a métrica == 2172416 retornar o parágrafo inteiro.

Eu gostaria de saber a maneira mais simples e fácil de fazer isso, já que vou aplicar isso em diferentes cenários.

Além disso, se eu tiver isso no meu arquivo, como pode buscar apenas as linhas de 11 de abril? Posso usar curinga aqui?

CPU0:Apr 11 05:22:04.768 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG : 

CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG : 

CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 06:09:56.707 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 
    
por Sal 20.05.2018 / 16:18

2 respostas

0

awk '/Route metric is 2172416/,/Loading/' file.txt
O comando

acima imprime que a linha começa em A métrica de rota é 2172416 e termina com Carregando linha

awk '/Apr 11/' second_file.txt
grep 'Apr 11' second_file.txt
O comando

acima irá imprimir as linhas tendo 11 de abril . você também pode usar o grep

    
por 20.05.2018 / 16:25
0

Assumindo que os dados no primeiro arquivo são exatamente como você mostrou, com linhas em branco, você pode usar o GNU grep (ou alguns outros) e perguntar pelo contexto circundante:

grep -B 5 -A 6 -F 'Route metric is 2172416' file

Isso retornará 5 linhas de contexto antes da correspondência e 6 linhas de contexto após a correspondência, junto com a linha contendo a string fixa Route metric is 2172416 .

Para obter todas as linhas que mencionam Apr 11 :

grep -F 'Apr 11' file

ou, se você precisar de critérios de correspondência mais específicos

grep '^CPU0:Apr 11' file

... que requer que o padrão dado corresponda ao início da linha.

    
por 20.05.2018 / 16:40