grep与正则表达式

本文详细介绍了grep工具的基本用法及正则表达式的应用,包括基础与扩展正则表达式的元字符、重复操作符等,区分了shell通配符与正则表达式中的*和?的区别。

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  巢北 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/helei/archive/2011/06/04/2072808.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值