Linux在1行输出中打印多个IP地址(ifconfig)

时间:2017-06-14 13:44:27

标签: linux awk ifconfig

这是标准的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 $1}'
user@linux:~$ 

输出看起来像这样

user@linux:~$ ./script.sh
192.168.1.1
10.0.1.1
user@linux:~$

我想要完成的是在一行打印IP地址的输出......就像这样。

user@linux:~$ ./script2.sh
192.168.1.1 10.0.1.1
user@linux:~$

ifconfig可以吗?如果是的话,如果你能分享这个技巧,我将不胜感激。感谢

3 个答案:

答案 0 :(得分:1)

如果您有hostname

hostname -I

<强>测试

$ hostname -I
192.168.2.253 192.168.0.179

答案 1 :(得分:1)

class Lease(models.Model):
    leaserholder = models.CharField(max_length=300)

您的代码几乎可以正常运行。只需将换行符转换为空格并添加更多换行符。

答案 2 :(得分:0)

ifconfig | awk '{match($0,/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