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支持的通配符.