다음은 내가 받은 Cisco 구성 파일의 예입니다.https://resources.intenseschool.com/mpls-basic-configuration/이 질문과 관련이 있도록 약간 수정했습니다.
나는 그것을 저장 하고 egrep을 사용하여 해당 섹션 아래의 모든 IP 주소 이름을 file.txt
지정해 보았습니다 .interface
file.txt
interface Loopback0
description ** test **
ip address 10.1.1.11 255.255.255.255
!
interface FastEthernet0/0
description ** Connection to ABC **
bandwidth 3000
ip address 10.0.12.1 255.255.255.0
mpls ip
!
interface FastEthernet0/1
ip flow monitor all-traffic-monitor output
ip address 10.0.100.1 255.255.255.0
!
interface Ethernet1/0
description ** Connection to XYZ **
ip address 10.0.13.1 255.255.255.0
ip helper-address 10.1.1.1
ip helper-address 10.1.1.2
!
router ospf 1
network 1.1.1.1 0.0.0.0 area 0
network 10.0.12.0 0.0.0.255 area 0
network 10.0.13.0 0.0.0.255 area 0
!
router bgp 14
neighbor 10.4.4.4 remote-as 14
neighbor 10.4.4.4 update-source Loopback0
network 10.0.100.0 mask 255.255.255.0
redistribute static
no auto-summary
!
ip route 192.168.100.0 255.255.255.0 10.0.100.10
!
원하는 출력
interface Loopback0
ip address 10.1.1.11 255.255.255.255
interface FastEthernet0/0
ip address 10.0.12.1 255.255.255.0
interface FastEthernet0/1
ip address 10.0.100.1 255.255.255.0
interface Ethernet1/0
ip address 10.0.13.1 255.255.255.0
ip helper-address 10.1.1.1
ip helper-address 10.1.1.2
다음은 몇 가지 시도이지만 그 중 어느 것도 내가 원하는 결과를 생성하지 않습니다.
1번 시도
통사론:egrep ^interface file.txt
문제: IP가 캡처되지 않았습니다.
[user@linux ~]$ egrep ^interface file.txt
interface Loopback0
interface FastEthernet0/0
interface FastEthernet0/1
interface Ethernet1/0
[user@linux ~]$
2번 시도
통사론:egrep -A2 ^interface file.txt
interface
문제: 데이터가 너무 많습니다. 해당 섹션 아래의 라인과 모든 IP 주소 만 원합니다.
[user@linux ~]$ egrep -A2 ^interface file.txt
interface Loopback0
description ** test **
ip address 10.1.1.11 255.255.255.255
--
interface FastEthernet0/0
description ** Connection to ABC **
bandwidth 3000
--
interface FastEthernet0/1
ip flow monitor all-traffic-monitor output
ip address 10.0.100.1 255.255.255.0
--
interface Ethernet1/0
description ** Connection to XYZ **
ip address 10.0.13.1 255.255.255.0
[user@linux ~]$
3번 시도
통사론:egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
문제: IP 주소만 인쇄하는데 인터페이스 이름도 알고 싶습니다.
[user@linux ~]$ egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
ip address 10.1.1.11 255.255.255.255
ip address 10.0.12.1 255.255.255.0
ip address 10.0.100.1 255.255.255.0
ip address 10.0.13.1 255.255.255.0
ip helper-address 10.1.1.1
ip helper-address 10.1.1.2
network 1.1.1.1 0.0.0.0 area 0
network 10.0.12.0 0.0.0.255 area 0
network 10.0.13.0 0.0.0.255 area 0
neighbor 10.4.4.4 remote-as 14
neighbor 10.4.4.4 update-source Loopback0
network 10.0.100.0 mask 255.255.255.0
ip route 192.168.100.0 255.255.255.0 10.0.100.10
[user@linux ~]$
4번을 시도해 보세요
통사론:egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
interface
문제: 거의 작동하지만 데이터가 너무 많습니다. 해당 섹션 아래의 라인과 모든 IP 주소 만 원합니다.
[user@linux ~]$ egrep '^interface|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
interface Loopback0
ip address 10.1.1.11 255.255.255.255
interface FastEthernet0/0
ip address 10.0.12.1 255.255.255.0
interface FastEthernet0/1
ip address 10.0.100.1 255.255.255.0
interface Ethernet1/0
ip address 10.0.13.1 255.255.255.0
ip helper-address 10.1.1.1
ip helper-address 10.1.1.2
network 1.1.1.1 0.0.0.0 area 0
network 10.0.12.0 0.0.0.255 area 0
network 10.0.13.0 0.0.0.255 area 0
neighbor 10.4.4.4 remote-as 14
neighbor 10.4.4.4 update-source Loopback0
network 10.0.100.0 mask 255.255.255.0
ip route 192.168.100.0 255.255.255.0 10.0.100.10
[user@linux ~]$
이 외에 더 좋은 도구가 있으면 egrep
알려주시기 바랍니다.
답변1
사용진주:
perl -lne 'print "\n$_" if /interface/; print if / ip ./' file
사용앗:
awk '/interface/{print "\n"$0} / ip ./' file
산출
interface Loopback0
ip address 10.1.1.11 255.255.255.255
interface FastEthernet0/0
ip address 10.0.12.1 255.255.255.0
interface FastEthernet0/1
ip flow monitor all-traffic-monitor output
ip address 10.0.100.1 255.255.255.0
interface Ethernet1/0
ip address 10.0.13.1 255.255.255.0
ip helper-address 10.1.1.1
ip helper-address 10.1.1.2