1

我正在尝试提出一个快速命令,以便通过命令获取计算机的 IPgrep地址ifconfig

到目前为止,我有这个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\.]+'

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

4

3 回答 3

3

您可以使用:

ifconfig | awk '$1=="inet" && $2!="127.0.0.1"{print $2}'

或者在 Linux 上:

ifconfig eth0 | awk -F '[ :]+' '$2=="inet" {print $4}'
于 2015-06-30T16:25:20.380 回答
2

您可以使用cut, 通过分隔符将输出切割成子字符串:

    ifconfig eth0 | grep -Eo 'inet addr:[0-9\.]+' | cut -d':' -f 2

标志-f 2用于选择第二个子字符串。

于 2015-06-30T16:32:34.250 回答
1

使用后向表达式;使用grep,您需要添加-P开关以启用此构造,而不是-E(至少在 bash v4.1.1 for cygwin 下)。所以只要改变你最后一次的尝试:

ifconfig eth0 | grep -Po '(?<=inet addr:)[0-9\.]+'
于 2015-06-30T16:35:40.613 回答