使用grep提取IP地址的正则表达式

时间:2017-07-27 12:26:13

标签: regex bash

我正在尝试解析默认路由的默认IP地址。

我已经有了默认路由,我正在尝试从中提取IP地址。

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

获取IP到IP地址所在的正确行:

inet 10.1.4.33/22 brd 10.1.83.255 scope global eth0

我需要帮助提取IP地址部分10.1.4.33

5 个答案:

答案 0 :(得分:4)

将输出传输到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只需选择第一场比赛。

答案 1 :(得分:2)

您可以使用此awk

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

答案 2 :(得分: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)}}'

答案 3 :(得分:0)

使用sed:

完成可用选项
ip add show dev eth0 | sed -rn 's@^.*inet[[:blank:]]([[:digit:]]{1,3}(.[[:digit:]]{1,3}){3})/.*$@\1@p'

答案 4 :(得分:0)

不需要复杂的正则表达式。

<style>


body {
    margin: 0;
    padding: 0;
    text-align: center;  !!! 
}

.centered {
    margin: 0 auto;
    display:block;
    text-align: left;
    width: 800px;
}


</style>