Regex para a interface Cisco

2

Eu gostaria de saber se tenho algum sed , grep ou awk regex para analisar a seção da interface Cisco e excluir se a interface está inoperante (desligamento), como no exemplo abaixo.

Exemplo:

!
interface FastEthernet0/1
 ip address 10.16.0.1 255.255.255.224
!
interface FastEthernet0/2
 ip address 10.17.0.1 255.255.255.224
 shutdown
!

Estou usando sed regex abaixo para analisar a seção da interface:

sed -n -e '/^interface/,/^!/p' file.txt

Mas o regex acima, analisa toda a interface e não exclui a interface.

    
por user32634 18.02.2013 / 21:30

1 resposta

1

awk

Com o GNU awk ou mawk você poderia fazer assim:

awk -v RS='!\n' '!/shutdown/'

Saída:

interface FastEthernet0/1
 ip address 10.16.0.1 255.255.255.224

Você poderia tornar a correspondência mais precisa se procurar apenas o desligamento na terceira linha:

awk -v RS='!\n' -v FS='\n +' '$3 !~ /shutdown/'

sed

Você também pode usar sed, mas é mais complicado.

Uma abordagem é aquela com a qual você começou, mas colete todo o registro em espaço antes de imprimir qualquer coisa. Isso funciona com o GNU sed:

sed -n '/^interface/,/^!/ H; 1b; /^!/ { z; x; s/^\n//g; /shutdown/!p }'
    
por 18.02.2013 / 21:36

Tags