8、通过grep使用正则表达式
正则表达式:他通过一个字符串来描述、匹配一些符合某个语法规则的字符串,从而可以对这些符合语法规则的字符串,进行相应的处理。
常见支持正则表达的工具如下:
Grep命令族 用于匹配文本行
Sed流编辑器 用于改变输入流
Awk 用于处理字符串语言
More或less 文件查看程序
Ed、vi、vim 文本编译器
基本正则表达式
. 匹配单个字符
[] 匹配制定范围内的多个字符
[^] 匹配指定范围外的任意单个字符
^ 行首定位符
$ 行为定位符
^$ 匹配空白行
* 限定符之一本身不代表任何字符用来指定前面一个字符出现任意次,包括零次。
+ 限定符之一,前面字符至少出现一次
| 表示或的关系
() 表示一组可选值的集合|()表示一组可选值
.* 任意长度任意字符
\? 匹配前面字符一次或者零次
\< 后面字符必须作为词首出现
\> 前面字符必须作为词尾出现
\d 数字匹配
\D 非数字匹配
\s 空白字符匹配
\S 非空白字符匹配
\{M,N\} \用来转义,防止{}被bash来解析,匹配前面字符至少m次,至多n次,\{1,\}表示最少一次,最多无上限。
运算符优先级
\转义符
[]方括号表达式
()分组
*、+、?、{m}、{m,}、{m,n}限定符
普通字符 按照从左到右
^、$定位符
| 或运算
Grep 全局搜索正则表达式并打印文本行
Grep [option] pattern [file]
[option]:
-c 只打印匹配文本行的行数,不显示匹配内容
-i 匹配时忽略大小写
-h 当搜索多个文件时,不显示匹配文件的前缀名
-l 只列出含有文本行的文件的文件名,不显示具体内容。
-s 不显示关于不存在或者无法读取文件的错误信息
-v 只显示不匹配的文本行
-w 匹配整个单词
-x 匹配整个文本行
-r 递归搜索
-q 禁止输出任何匹配结果,以推出状态码的形式输出,0表示找出了匹配文本行
-E 支持扩展正则表达式
-P 支持perl正则表达式
-F 不支持正则表达式,将模式按字面意义书出