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