.png)
すべてのインターフェイスのIPアドレスを表示するには、「ip a」パイプと「sed」パイプを使用します。
ip a |sed -En "{N ; N ; s/^[1-9]: (.*: ).+\n?.+\n? {4}inet \
(([0-9]{1,3}[./]){4}[0-9]{1,2}).*/\1\2/p}"
グループを交換できない理由
(([0-9]{1,3}[./]){4}[0-9]{1,2})
(.*\ ) を使用して代わりに作成
ip a |sed -En "{N ; N ; s/^[1-9]: (.*?: ).+\n?.+\n? {4}inet \
(.*\ ).*/\1\2/p}"
一致しますが、行末のIPアドレスの後のスペースのみを見つけて、行全体を\ 2として印刷します。 「一般的な」正規表現ではこれが機能します。
ip a の出力は次のようになります。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 10:78:d2:8e:e7:cf brd ff:ff:ff:ff:ff:ff
inet 192.168.1.44/24 brd 192.168.1.255 scope global dynamic eno1
valid_lft 41778sec preferred_lft 41778sec
inet6 fe80::1278:d2ff:fe8e:e7cf/64 scope link
valid_lft forever preferred_lft forever
3: wlx68a3c45b2875: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 68:a3:c4:5b:28:75 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.36/24 brd 192.168.1.255 scope global dynamic noprefixroute wlx68a3c45b2875
valid_lft 40457sec preferred_lft 40457sec
inet6 fe80::6aa3:c4ff:fe5b:2875/64 scope link
valid_lft forever preferred_lft forever
答え1
文字列を空白まで一致させるには、コマンド[^ ]*
全体を使用します。
ip a |sed -En "{N ; N ; s/^[1-9]: (.*: ).+\n?.+\n? {4}inet \
([^ ]*).*/\1\2/p}"
出力:
lo: 127.0.0.1/8
eno1: 192.168.1.44/24
wlx68a3c45b2875: 192.168.1.36/24