Chinaunix首页 | 论坛 | 博客
  • 博客访问: 856327
  • 博文数量: 186
  • 博客积分: 4939
  • 博客等级: 上校
  • 技术积分: 2075
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 17:15
文章分类

全部博文(186)

文章存档

2018年(1)

2017年(3)

2016年(11)

2015年(42)

2014年(21)

2013年(9)

2012年(18)

2011年(46)

2010年(35)

分类: LINUX

2010-11-03 11:26:36

ifconfig | sed -n '/Link/{N;s/\(^[^ ]*\).*inet addr:\([0-9.]*\).*/\1  \2/p}'

\(X\) 是regexp的back reference,第一个就后边的\1,以此类推

PS:关于sed的一个讨论



补充一个zero width assettion(零宽断言,或者环视)


可以看到ifconfig的输入很有规律,
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0

eth1      Link encap:Ethernet  HWaddr 00:50:56:BC:1E:2A
          inet addr:10.250.1.230  Bcast:10.250.1.255  Mask:255.255.255.0

可以看到ip之前都有个inet addr:假如能定位到这里,IP自然能取得了。

首先看:
(?<=Expression)pattern  

pattern断言它自己左边有Expression,也就是左边没有符合expression的,pattern不成立,有点晦涩哈:)


ifconfig | grep -oP "(?<=inet addr:)[0-9\.]+"
(?<=inet addr:)表示在regexp的左侧,那么后边的[0-9\.]+就是IP了
127.0.0.1
10.250.1.230

假如只要10.250.1.230呢?看下后边有个Bcast
ifconfig | grep -oP "(?<=inet addr:).*(?= Bcast)"
就只获取了eth0的ip了。
补充,过滤出css的url,css内如只有1行,大概如下
xxx  url('') xxx (然后上述URL重复出现)
grep -oP "(?<=')[^']+" #前边是',中间是外加非'的若干字符,不能用.*否则会遇到regexp 的greedy match.

阅读(1113) | 评论(0) | 转发(0) |
0

上一篇:lvs的深刻理解

下一篇:sed交换行

给主人留下些什么吧!~~