尝试从终端中的`ifconfig`捕获IP地址

时间:2015-06-30 16:23:40

标签: regex terminal grep ifconfig

我正在尝试使用快速命令来通过grepifconfig命令获取计算机的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\.]+'

但这仍然没有解决我的问题。

3 个答案:

答案 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\.]+'