[英]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.