shell编程问题 sed使用

sed -nr 's/.*inet (addr:)?(([0-9]*.){3}[0-9]*).*/\2/p'

求大神解释下这句

这正则没看太懂,.* 这是指n个 . 吗 ? \2这是将前边替换成2?

求说明下全句

这句是用来找出ip中的一部分
/sbin/ifconfig $(/sbin/ifconfig|grep eth|awk '{print $1}'|sed -n '1p')| sed -nr 's/.*inet (addr:)?(([0-9]*.){3}[0-9]*).*/\2/p'

sed之前明白,之后的不懂,求教

\2是正则表达式中的分组捕获,也就是用第二个分组进行替换
.*是先匹配inet前面的任意多个字符

图片说明

看下面这张图来解析那个正则表达式就清楚一点了。
图片说明