簡體   English   中英

使用grep提取IP地址的正則表達式

[英]Regular expression using grep to extract an IP address

我正在嘗試解析默認路由的默認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

僅選擇首個匹配項時才需要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 's@^.*inet[[:blank:]]([[:digit:]]{1,3}(.[[:digit:]]{1,3}){3})/.*$@\1@p'

不需要復雜的正則表達式。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM