そのセクションでCiscoインターフェイス名とすべてのIPアドレスをgrepする方法

そのセクションでCiscoインターフェイス名とすべてのIPアドレスをgrepする方法

以下は、私が受け取った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

おすすめ記事