bash - linux - 只获取grep的第一部分:获取ifconfig的ip

  显示原文与译文双语对照的内容

ifconfig | grep -m1"inet addr" 



给我


inet addr:172.30.1.6 Bcast:172.30.140.255 Mask:255.255.252.0



但是,我只想要 ip,它是 172.30.1.6 。 我该怎么做? 注意,我必须使用 ifconfig,因为它是一个具有有限功能的嵌入式系统。

时间:

这时该拿出你的剪刀(cut)了。


echo inet addr:172.30.1.6 Bcast:172.30.140.255 Mask:255.255.252.0 | cut -d : -f 2 | cut -d"" -f 1



如果你想做的就是获得IP地址,那么可以使用 -i ( 参考 get终端命令来获取IP地址和无任何其他信息) 来获得更简单的方法。? )

由于其他人已经提到cut和 awk,我将使用sed提供解决方案:






echo"inet addr:172.30.1.6 Bcast:172.30.140.255 Mask:255.255.252.0" | sed -e"s/.*(addr:[^ ]*). */1/"



addr:172.30.1.6



echo"inet addr:172.30.1.6 Bcast:172.30.140.255 Mask:255.255.252.0" | sed -e"s/.*addr:([^ ]*). */1/" 



172.30.1.6




有一种方法。


ifconfig | grep -m1"inet addr" | awk '{print $2}' | awk -F: '{print $2}'



这就是你想要做的?


awk -F'[: ]' '/inet addr/{print $3; exit}'



例如使用 cat file 代替 ifconfig:


$ cat file


inet addr:172.30.1.6 Bcast:172.30.140.255 Mask:255.255.252.0



$ cat file | awk -F'[: ]' '/inet addr/{print $3; exit}'


172.30.1.6



...