linux文本处理利器之grep
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文本处理利器之grep相关的知识,希望对你有一定的参考价值。
一、grep是什么?
Grep : global search regular expression(RE) and print out the line,全面搜索正则表达式,并把行打印出来,是一个可以从文本或流中查找字符串的一个命令行工具,它可以通过使用正则表达式来更加灵活的查找一个字符 串,就是通过复杂模式进行查找以满足你的需求。
二、正则表达式的分类
1、基本正则表达式:BRE(BASIC REGULAR EXPRESSION)
2、拓展正则表达式:ERE(EXTEND REGULAR EXPRESSION)
3、perl正则表达式:PRE(PERL REGULAR EXPRESSION)
三、grep、sed、awk家族的特点
1、grep、egrep、fgrep正则的特点
1)grep支持BRE、ERE、PRE
a.grep指令不跟任何参数,则表示使用BRE
b.grep指令后跟-E参数,则表示使用ERE
c.grep指令后跟-P参数,则表示使用PRE
2)egrep支持ERE、PRE
a.egrep指令不跟任何参数,则表示使用ERE
b.egrep指令后跟-P参数,则表示使用PRE
3)fgrep默认固定字符串模式
a.fgrep默认不支持BRE、ERE,只支持固定字符串模式,速度相比grep,egrep都要快
b.fgrep指令后跟-G选择,则表示支持BRE
2、sed正则表达式特点
1)sed支持BRE、ERE
a.默认支持BRE
b.sed指令后跟-r参数,则表示使用ERE
c.sed用来处理文本文件,对文本文件的内容进行curd操作,按行进行处理
3、awk正则表达式特点
1)awk(gawk)正则表达式特点
a.默认支持ERE
b.只要对文本文件的列进行处理
四、grep命令的基本使用
1、grep的使用语法
1)grep [option] pattern [FILE...]
2、grep常用选项
1)-c:之输出匹配行的数目
2) -i:不区分打小写
3) -r:递归查找(当前搜索目录以及其子目录)
4) -n:输出匹配的行及行号
5)-l:多文件查找时只输出匹配字符串的文件名
6)-v:反向匹配,即显示不匹配的行
7)-o:仅显示匹配到的字符串的本身
8)-q:相当于--quiet,静默模式(可以用来判断此次查找是否包含此字符串,适合在脚本中使 用)
Notice:如果正则表达式中有元字符,则要使用引号扩起来,模式中有变量则使用双引号, 否则 使用单引号。
a.centos7:使用grep的别名,匹配到的结果默认高亮显示
b.centos6:默认没有使用
3、基于基本正则表达式元字符的使用
1) 字符匹配
a. . 匹配任意单个字符
b. [] 匹配指定范围内的单个字符
c. [^] 匹配范围之外的字符
2) 次数匹配
a. * 匹配前面的字符任意次(0,1或多次)
b. .* a后面任意长度的任意字符
c. \+ 匹配前面的字符至少一次
d. \? 匹配前面的字符0或1次
e. \{m\} 其前面的字符出现m次,m为非负整数
f. \{m,n\} 其前面的字符出现m次,m为非负整数
\{0,n\} 至多n次
\{m,\} 至少m次
3) 位置锚定
限制模式匹配到的文本,只能出现在目标文本的那个位置
a. ^ 行首锚定,用于模式的最左侧,^pattern
c. ^pattern$ 匹配整行
^$ 用来匹配空行
4) 单词锚定
a. \<或\b 词首锚定,用于单词模式的左侧,格式为\<pattern,pattern\b
b. \>或\b 词尾锚定,用于单词模式的右侧,格式为pattern\>,pattern\b
5) 分组与引用
a. \(pattern\) 将此次匹配到的字符串作为一个不可分割的整体进行处理
6) | 或者
a. a|b 表示a或者b, 表示的是整个表达式的左侧或者是右侧
五、egrep之拓展表达式
本文出自 “11304510” 博客,请务必保留此出处http://11314510.blog.51cto.com/11304510/1750400
以上是关于linux文本处理利器之grep的主要内容,如果未能解决你的问题,请参考以下文章