我想解析默認路由的默認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
我想解析默認路由的默認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
管你的輸出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
。
您可以使用此awk
:
/sbin/ip addr show dev eth0 | awk -F '[ /\t]+' '$2=="inet"{print $3; exit}'
192.168.0.52
嘗試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)}}'
有關可用的選項後,使用sed的:需要
ip add show dev eth0 | sed -rn '[email protected]^.*inet[[:blank:]]([[:digit:]]{1,3}(.[[:digit:]]{1,3}){3})/.*[email protected]\[email protected]'
沒有複雜的正則表達式。
output=$(/sbin/ip addr show dev eth0 | grep 'inet')
[[ $output = inet\ (.*)/ ]] && ip_addr=${BASH_REMATCH[1]}
它涉及兩個'grep'和一個'head'調用,所有這些都可以在一個'awk'中完成。 – anubhava