1.什么是grep正则表达式?
grep:就是用来对文本内容进行过滤的命令
正则表达式:就是一套处理大量的字符串而定义的规则和方法。
通过正则表达式这些特殊字符号,可以快速的过滤、替换需要的内容。
正则表达式分为两种:基本正则表达式和扩展正则表达式
2.grep命令
参数 | 作用 |
| 排除匹配的内容 |
| 忽视大小写 |
| 只显示匹配的内容 |
| 显示行号 |
| 显示匹配颜色 |
| 支持扩展的正则表达式 |
以下用实例来演示各参数的作用:
原文件内容如下
命令 | 说明 |
| 过滤passwd文件中含有root的信息 |
命令 | 说明 |
| (不区分大小写)过滤含有root的信息 |
| (不区分大小写)过滤含有root的信息 |
| (不区分大小写)过滤以root开头的信息 |
| (不区分大小写)过滤以root结尾的信息 |
| (不区分大小写)过滤以root开头或结尾的信息 |
| (不区分大小写)过滤root不在开头或结尾的信息(不一定含有root) |
| (不区分大小写)过滤root在中间的信息 |
命令 | 说明 |
| 显示含有ROOT的行的行号 |
| 显示含有ROOT的行和其上下各一行以及它们行号 |
| 显示含有ROOT的行和其上下各一行 |
| 显示含有ROOT的行和其下一行 |
| 显示含有ROOT的行和其上一行 |
3.正则表达式(Basic regular expression)
字符 | 说明 |
| 例如 ^word—以word开头的内容 |
| 例如 word$—以word结尾的内容 |
| 空行 |
| 任意多个字符开头 |
| 表示且只能代表任意一个字符(当前目录,加载文件) |
| 转移字符,让有特殊身份的字符保持原意不变 |
| 以该字符串开头(防止贪婪模式) |
| 以该字符串结尾(防止贪婪模式) |
注意:grep
要对{}
转义 ,egrep
(或grep -E
)不需要转义grep
命令不能识别一些特殊符号(如|,?,(),*,+等 ),而egrep
或 grep -E
可识别扩展符号-E
有些时候用grep会搜索不出来,但要搜索的内容里面实际上是存在的,此时我们就要加上扩展正则
4.扩展正则表达式
5.grep中字符的匹配位置设定和匹配次数设定
(1)grep中字符的匹配位置设定
参数 | 说明 |
| 以该字符开头 |
| 以该字符结尾 |
| 以该字符串开头 |
| 以该字符串结尾 |
| 匹配该字符串 |
(2)grep中字符的匹配次数设定
参数 | 说明 |
| 字符出现[0-任意次] |
| 关键字之间匹配任意字符 |
| 字符出现[0-1次] |
| 字符出现[1-任意次] |
| 字符出现[n次] |
| 字符出现[最少m次,最多n次] |
| 字符出现[0-n次] |
| 字符出现[至少m次] |
| 关键字出现[n次] |
| 匹配字符集合内任意一个字符[a-z] |
| ^在中括号内表示非,即不包含a或者b或者c |