Cisco 인터페이스에 대한 정규식

Cisco 인터페이스에 대한 정규식

아래 예와 같이 Cisco 인터페이스 부분을 구문 분석하고 인터페이스가 다운(down)된 경우 제외하는 일부 또는 sed정규식 이 있는지 궁금합니다 .grepawk

예:

!
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
!

sed인터페이스 부분을 구문 분석하기 위해 다음 정규식을 사용합니다 .

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

그러나 위의 정규식은 모든 인터페이스를 구문 분석하고 인터페이스를 제외하지 않습니다.

답변1

GNU awk 또는 mawk를 사용하면 다음과 같이 할 수 있습니다:

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

산출:

interface FastEthernet0/1
 ip address 10.16.0.1 255.255.255.224

세 번째 줄에서만 shutdown을 찾으면 더 정확하게 일치시킬 수 있습니다.

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

sed

물론 sed를 사용할 수도 있지만 더 복잡합니다.

한 가지 접근 방식은 시작하는 방식이지만 인쇄하기 전에 예약된 공간에 전체 레코드를 수집합니다. 이는 GNU sed에서 작동합니다.

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

관련 정보