2015-06-30 35 views
1

我試圖想出一個快速命令,通過grepifconfig命令獲取計算機的IP地址。嘗試捕獲終端中的`ifconfig`的IP地址

到目前爲止,我有這個ifconfig eth0 | grep -Eo 'inet addr:[0-9\.]+'將返回:

inet addr:192.168.1.26

我試圖調整正則表達式,雖然這樣我只得到了IP地址本身。我的正則表達式的認識非常有限,我把一個非捕獲組圍繞「INET地址:」這使得該命令是這樣的:

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

但仍然沒有解決我的問題。

+0

不要在Linux上使用'ifconfig',使用'ip'。 'ifconfig'已被棄用,並且已經存在很久了。 –

+0

哪個操作系統/發行版和版本? – Cyrus

+0

@EtanReisner我的安裝沒有'ipconfig',我是否真的爲安裝它而獲得任何好處? – Zach

回答

1

使用lookbehind表達式;與grep,您需要添加-P開關來啓用此構造而不是-E(至少在cygwin的bash v4.1.1下)。所以只需稍作改變即可:

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

完美!這個解決方案似乎是最簡潔的,所以我打算使用它,但其他人也很感激! – Zach

3

您可以使用:

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

或者在Linux上:

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

您可以使用cut,通過分隔符:減產成子。

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

標記-f 2用於選擇第二個子串。