ネットワーク回りのログや調査をしていると、IPアドレスやMACアドレスだけをgrepで抽出したいことがある。
その場合は、それぞれ以下のようにgrepを実行するとよい。
IPアドレス
grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
[ssh-user@BS-PUB-CENT7-01 .ssh]$ echo IPAddress:255.255.333.111 | grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
[ssh-user@BS-PUB-CENT7-01 .ssh]$ echo IPAddress:192.168.0.1 | grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
IPAddress:192.168.0.1
[ssh-user@BS-PUB-CENT7-01 .ssh]$ echo IPAddress:192.168.100.243 | grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
IPAddress:192.168.100.243
[ssh-user@BS-PUB-CENT7-01 .ssh]$ ip addr | grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
inet 127.0.0.1/8 scope host lo
inet 172.XXX.XXX.XXX/24 brd 172.XXX.XXX.255 scope global eth0
inet 172.XXX.XXX.XXX/24 brd 172.XXX.XXX.255 scope global eth1
MACアドレス
grep -i '[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}'
blacknon@BS-PUB-UBUNTU-01:~$ ifconfig | grep -i '[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}'
eth0 Link encap:イーサネット ハードウェアアドレス 62:35:64:64:61:31
eth1 Link encap:イーサネット ハードウェアアドレス 32:63:31:63:38:61
blacknon@BS-PUB-UBUNTU-01:~$ ip addr | grep -i '[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}'
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
link/ether 32:63:31:63:38:61 brd ff:ff:ff:ff:ff:ff