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

Trying to capture IP address from `ifconfig` in terminal

我正在尝试想出一个快速命令,以便通过 grepifconfig 命令获取计算机的 IP 地址。

到目前为止,我有这个 ifconfig eth0 | grep -Eo 'inet addr:[0-9\.]+' 它将 return:

inet addr:192.168.1.26

我正在尝试调整正则表达式,以便只获取 IP 地址本身。我对正则表达式的了解非常有限,我在 'inet addr:' 周围放置了一个非捕获组,这使得命令看起来像这样:

ifconfig eth0 | grep -Eo '(?:inet addr:)[0-9\.]+'

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

您可以使用:

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

或 Linux:

ifconfig eth0 | awk -F '[ :]+' '=="inet" {print }'

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

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

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

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

ifconfig eth0 | grep -Po '(?<=inet addr:)[0-9\.]+'