巢北的博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

grep工具--行过滤器支持正则表达式

grep基本用法:grep -[cinv] 'string' filename

-c:行数

-i:忽略大小写

-n:行号

-v:反向选择

string可以是正则表达式, 通常情况下可以不要单号, 但为正则表达式情况下可能会出错.

1.基础正则表达式:

元字符: [ ] \ ^ $ . *

[abc], [a-z], [a-zA-Z]: 代表一个字符, 给出的是备选值范围. 

[^a-z], [^abc], [^a-zA-Z], [^a-z\.!^ -]: ^表示排除

^[0-9]: ^表示行的开头, 如以数字开头的行

\.$: $表示行的结尾, 如以点.结尾的行

^$: 空行

\: 转义

*: 重复操作,不能单独使用, 如00*表示一个或多个O

.: 任意一个字符, 如..*表示一个或多个字符

a\{2\}, a\{2,\}, a\{2,5\}: 分别表示2个a, 1个以上a, 2到5个a.

2.扩展正则表达式: grep -E 或 egrep

元字符: | ? + ( )

|: 或, 如^$|^#表示空行或以#开头的行

?: 重复操作,不能单独使用, 表示前面字符或组出现0次或多次, 如(xyz)?

+: 重复操作,不能单独使用,表示前面字符或组出现1次或多次, 如(xyz)+

(): 形成单元组, 对单元组像单字符般操作

shell支持通配符: *代表0个或多个字符, ?代表一个字符. 注意与正则表达式中的*和?的区别. 在string中, *和?被解析为正则表达式中的重复操作符, 而非shell支持的通配符.

posted on 2011-06-04 20:35  巢北  阅读(206)  评论(0编辑  收藏  举报