qq_25096021
qq_25096021
采纳率2.6%
2016-02-02 09:21 阅读 1.6k

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条回答 默认 最新

  • oyljerry oyljerry 2016-02-02 10:45

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

    点赞 评论 复制链接分享
  • fateflv fateland 2016-03-07 07:41

    图片说明

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

    点赞 评论 复制链接分享