1、简介:
grep是一个最初用于Unix操作系统的命令行工具,在Linux同样得到了广泛的使用,这个程序的名称来自Unix文本编辑器ed类似操作的命令。grep全称是Globally search for a Regular Expression and print out the line,表示在给出文件列表或标准输入后,会对匹配一个或者多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本,Linux下所有用户皆可使用。
2、格式:
grep [OPTIONS] PATTERN [FILE...]
3、常用选项:
--color=auto:表示使用颜色填充匹配到的内容,使其高亮显示,效果如下图:
-v:反向匹配,显示不能被模式所匹配到的行;
使用-v选项的效果如下图:
未使用-v选项的效果如下图:
-i:不区分字符大小写,效果如下图:
-o: 仅匹配被模式匹配到的字串,而非整行;
使用-o选项的效果如下图:
不使用-o选项的效果如下图:
正常显示效果:
-A#:#为数字,表示匹配到内容及其后边的#行,效果如下图:
-B#:#为数字,表示匹配到内容及其前边的#行,效果如下图:
-C#: #为数字,表示匹配到内容及其前后的#行,效果如下图:
4、正则表达式元字符:正则表达式是一类字符所书写出来的模式(pattern),元字符:不代表字符 本身的意义,用于额外功能性的描述。
字符匹配:
.:表示匹配任意单个字符,效果如下图:
[]:表示匹配范围内的任意单个字符,[^]:表示匹配范围外的任意单个字符,效果如下图:
常用范围表示格式:
[0-9]:表示匹配所有数字,等同于[[:digit:]],效果如下图:
[[:lower:]]:表示匹配所有小写字母,等同于[a-z],效果如下图:
[[:upper:]]:表示匹配所有大写字母,等同于[A-Z],效果如下图:
[[:alpha:]]:表示匹配所有大写字母和小写字母,效果如下图:
[[:alnum:]]:表示匹配字母和数字,效果如下图:
[[:punct:]]:表示匹配标点符号,效果如下图:
[[:space:]]:表示匹配空白字符,由于空白字符无法显示颜色这里取非空白符测试,效果如下图:
次数匹配:
*:表示匹配之前的字符任意次
\?:表示匹配之前的字符0次或1次
\{m\}:表示匹配之前的字符m次
\{m,n\}:表示匹配之前的字符至少m次,至多n次
\{m,\}:表示匹配之前的字符至少m次
\{0,n\}:表示匹配之前的字符至多n次
位置锚定:
^:锚定行首
$:锚定行尾
^$:空白行
单词锚定:
\<char:锚定词首,等同于\bchar
char\>:锚定词尾, 等同于char\b
\<char\>:表示锚定单词,等同于\bchar\b
分组:\(pattern\)
引用:\(pattern\).*\1:表示引用前边分组内容
5、egrep和grep的差异:
增加的元字符
+:表示匹配前边的字符至少一次
|:表示匹配两边的任意一边,比如x|y,表示匹配x或者y
温馨提醒:注意有无小括号的区别
变动的元字符
? :等同于grep中的\?
():等同于grep中的\(\)
{}:等同于grep中的\{\}