1. 什么是grep
- grep它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。
grep命令的常用格式为:grep [选项] ”模式“ [文件]
grep家族总共有三个:grep,egrep,fgrep。
2.常用选项
- -v:反过来(invert),只打印没有匹配的,而匹配的反而不打印。
- -i:忽略大小写
-q:不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误.
-E:将模式 PATTERN 作为一个扩展的正则表达式来解释 。
- -R:递归地读每一目录下的所有文件。
3.正则表达式与grep的使用
- 正则表达式的概念:
是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过 特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。 - 正则表达式的基本要素
字符类
数量限定符
位置限定符
特殊符号 字符类:
-“.”:表示匹配任意一个字符
- []:表示匹配括号内的任意一个字符
- “-”:表示在括号的的范围
-“^”:位于[ ]括号内的开头,匹配出括号中的字符以外的任意一个字符
-“[[:digit:]]:表示匹配任意一个数字
-“[[:alpha:]]”:表示匹配任意一个字母
数量限定符:
- “?”:紧跟在它前面的单元匹配0次或一次
- “+”:紧跟在它前面的单元匹配一次或多次
- “*”:紧跟在它前面的但愿匹配0次或多次
- “{N}”:紧跟在它前面的单元精确匹配N次
- “{N,}”:紧跟在它前面的单元应匹配至少N次
- ”{,M}”:紧跟在它前面的单元应匹配最多N次
- “{N,M}”:紧跟在它前面的单元应至少匹配N次,至多匹配M次。
- 位置限定符:
- “^”:匹配行首的位置
-“$”:匹配行末的位置
-“\<”:匹配单词开头的位置
-“>”:匹配单词结尾的位置
-“\b”:匹配单词开头或结尾的位置
-“\B”:匹配非单词开头或结尾的位置
- 特殊符号:
-“\”:转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符。
-“()”:将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符。
-“|”:连接两个子表达式,表示或的关系
- 其他字符
- \d: [0-9] 数字字符
- \D: [^0-9] 非数字字符
- \w :[a-zA-Z0-9_] 数字字母下划线
- \W :[^\w] 非数字字母下划线
- \s :[_\r\t\n\f] 表格,换行等空白区域
- \S :[^\s] 非空白区域
看上边发现-E与-P所得的结果不同,看到下面的分类即可明白。 - 正则表达式分类
基本的正则表达式(grep 指令后不跟任何参数,则表示要使用 ”BREs“ )。
扩展的正则表达式(grep 指令后跟 ”-E” 参数,则表示要使用 “EREs“ )。
Perl的正则表达式(grep 指令后跟 “-P” 参数,则表示要使用 “PREs”)。
练习:
1.过滤出手机号码: