shell之路 Linux正则工具【第一篇】文本处理三剑客之grep
通配符 元字符 限定符 正则表达式
转义符:保护元字符或通配符不被shell解析
需要说明的是:
1.通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell 特殊代号字符就可。而且涉及的只有*,? [] ,{} 这几种。
2.shell 元字符,基本是作用在命令上面,用作多命令分割(或者参数分割)。因此看到与通配符有相同的字符,但是实际上作用范围不同。所以不会出现混淆。详情可参考 https://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html
3.正则表达式 https://www.cnblogs.com/hyit/articles/4727760.html
总结:我们在使用正则工具grep sed awk时,如果遇到. ^ $ + * ? [] ,{}这类字符(通配符 元字符 限定符)要匹配,就在前面加反斜线\
作用
查找符合模式匹配规则(pattern)的所有行
命令格式
第一种形式:grep [option] [pattern] [file1,file2...]
第二种形式:stdout | grep [option] [pattern]
常用选项
注意:
1.默认情况下,关键字内的正则符号,grep是支持的,如果想把正则符号作为要匹配的字符串,需要加-F参数
2.基础的正则表达式和扩展的表达式的区别在于,后者支持更强大的功能(正则不只是限于grep,sed awk等均能使用)
3.grep命令-E和-F选项不能同时使用,egrep命令不能使用-F选项。一个是支持正则表达式,一个是不支持正则表达式,有歧义。
扩展规则 1、 + :表示重复一个或一个以上的前一个 RE 字符 2、 ? : 表示重复零个或一个前一个 RE 字符 3、 | :表示用或的方式找出数个字符串 4、 () : 表示找出群组字符串 5、 ()+ : 多个重复群组判别
-v 显示不匹配pattern的行 -i 搜索时忽略大小写显示行号 -n 显示行号 -E 支持扩展的正则表达式,等效于egrep -F 不支持正则表达式,按字符串的字面意思进行匹配 -r 递归搜索
了解选项
-c 只输出匹配行的数量 ,不显示具体内容 -w 匹配整词 -x 匹配整行 -l 只列出匹配的文件名,不显示具体匹配行内容 -A n 下n行 -B n 上n行 -c 上下n行
案例
谢谢