Linux 在 1 行输出中打印多个 IP 地址 (ifconfig)
Linux print multiple IP Address (ifconfig) in 1 line output
这是标准的 Linux ifconfig 命令
user@linux:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:10
inet addr:192.168.1.1 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:112 errors:0 dropped:0 overruns:0 frame:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14616 (14.2 KiB) TX bytes:17776 (17.3 KiB)
eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:11
inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
user@linux:~$
这是仅从 ifconfig
打印 IP 地址
user@linux:~$ cat script.sh
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print }'
user@linux:~$
输出看起来像这样
user@linux:~$ ./script.sh
192.168.1.1
10.0.1.1
user@linux:~$
我想要完成的是在 1 行中打印 IP 地址的输出...类似这样。
user@linux:~$ ./script2.sh
192.168.1.1 10.0.1.1
user@linux:~$
ifconfig 可以吗?如果是的话,如果你能分享这个技巧,我将不胜感激。谢谢
如果你有 hostname
,
hostname -I
测试:
$ hostname -I
192.168.2.253 192.168.0.179
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print }' | { tr '\n' ' '; echo; }
您的代码几乎可以正常运行。只需将换行符转换为 space 并添加更多换行符即可。
ifconfig | awk '{match([=10=],/inet addr:([^ ]+)/,a);x=x FS a[1]}END {print x} '
142.133.152.191 127.0.0.1
或使用grep
:
ifconfig | grep -oP 'inet addr:\K[^ ]+' | xargs
142.133.152.191 127.0.0.1
这是标准的 Linux ifconfig 命令
user@linux:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:10
inet addr:192.168.1.1 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:112 errors:0 dropped:0 overruns:0 frame:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14616 (14.2 KiB) TX bytes:17776 (17.3 KiB)
eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:11
inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
user@linux:~$
这是仅从 ifconfig
打印 IP 地址user@linux:~$ cat script.sh
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print }'
user@linux:~$
输出看起来像这样
user@linux:~$ ./script.sh
192.168.1.1
10.0.1.1
user@linux:~$
我想要完成的是在 1 行中打印 IP 地址的输出...类似这样。
user@linux:~$ ./script2.sh
192.168.1.1 10.0.1.1
user@linux:~$
ifconfig 可以吗?如果是的话,如果你能分享这个技巧,我将不胜感激。谢谢
如果你有 hostname
,
hostname -I
测试:
$ hostname -I
192.168.2.253 192.168.0.179
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print }' | { tr '\n' ' '; echo; }
您的代码几乎可以正常运行。只需将换行符转换为 space 并添加更多换行符即可。
ifconfig | awk '{match([=10=],/inet addr:([^ ]+)/,a);x=x FS a[1]}END {print x} '
142.133.152.191 127.0.0.1
或使用grep
:
ifconfig | grep -oP 'inet addr:\K[^ ]+' | xargs
142.133.152.191 127.0.0.1