2017-07-27 103 views
-1

我想解析默認路由的默認IP地址。使用grep提取IP地址的正則表達式

我已經有了默認路由,我試圖從中提取IP地址。

/sbin/ip addr show dev eth0 | grep 'inet' 

讓我儘可能的正確路線,其中IP地址是:

inet 10.1.4.33/22 brd 10.1.83.255 scope global eth0 

而且我需要幫助提取IP地址部分10.1.4.33

回答

3

管你的輸出grep -o

/sbin/ip addr show dev eth0 | grep 'inet' | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" | head -n 1

釷僅需要選擇第一個匹配時需要e head -n 1

+0

它涉及兩個'grep'和一個'head'調用,所有這些都可以在一個'awk'中完成。 – anubhava

2

您可以使用此awk

/sbin/ip addr show dev eth0 | awk -F '[ /\t]+' '$2=="inet"{print $3; exit}' 
192.168.0.52 
1

嘗試AWK多一個辦法了。

/sbin/ip addr show dev eth0 | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/);if(substr($0,RSTART,RLENGTH) && $0 ~ /inet/){print substr($0,RSTART,RLENGTH)}}' 
0

沒有複雜的正則表達式。

output=$(/sbin/ip addr show dev eth0 | grep 'inet') 
[[ $output = inet\ (.*)/ ]] && ip_addr=${BASH_REMATCH[1]}