我正在尝试使用快速命令来通过grep
和ifconfig
命令获取计算机的IP地址。
到目前为止,我有ifconfig eth0 | grep -Eo 'inet addr:[0-9\.]+'
这将返回:
inet addr:192.168.1.26
我正在尝试调整正则表达式,以便我只获取IP地址本身。我对正则表达式的了解非常有限,我在'inet addr:'周围设置了一个非捕获组,这使得命令看起来像这样:
ifconfig eth0 | grep -Eo '(?:inet addr:)[0-9\.]+'
但这仍然没有解决我的问题。
答案 0 :(得分:3)
您可以使用:
ifconfig | awk '$1=="inet" && $2!="127.0.0.1"{print $2}'
或者在Linux上:
ifconfig eth0 | awk -F '[ :]+' '$2=="inet" {print $4}'
答案 1 :(得分:2)
您可以使用cut
,通过分隔符:
将输出切割为子字符串。
ifconfig eth0 | grep -Eo 'inet addr:[0-9\.]+' | cut -d':' -f 2
标志-f 2
用于选择第二个子字符串。
答案 2 :(得分:1)
使用lookbehind表达式;使用grep
,您需要添加-P
开关以启用此构造而不是-E
(至少在bash v4.1.1下用于cygwin)。所以只需改变你的最后一次尝试:
ifconfig eth0 | grep -Po '(?<=inet addr:)[0-9\.]+'