linux学习-grep使用正则表达式示例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习-grep使用正则表达式示例相关的知识,希望对你有一定的参考价值。
在linux上使用grep配合正则表达式可以产生强大的搜索的效果,由于正则表达式中含有较多的特殊字符,所以结合grep时,最好使用单引号将表达式括起来,以免造成错误。首先创建一个文件RegExp.txt,文本内容如下所示:
--------TEXT BEGIN------------- good morining teacher hellp world is as script gold sunshine looks beautiful golden time files god belss me what a delicious food they teast Good you fell glad wrong word gooood wrong word g10d wrong word g12d wrong word g13d www.helloworld.com [email protected] Upper case 100% means pure php have gd module ----------TEXT END-------------
使用“^”匹配行首:
#搜索以good开头的行 grep '^good' RegExp.txt
使用“$”匹配行尾
#搜索以Good结尾的行 grep 'Good$' RegExp.txt
使用“^$”组合,配合空行,下面的命令可以计算文件中共有多少空行
#搜索空行的行数 grep -c '^$' RegExp.txt
使用方括号匹配多种可能
#搜索包含Good和good的行 grep '[Gg]ood' RegExp.txt
在方括号中使用^做反选
#搜索一个包含ood的行,但是不能是Good或good #记住在方括号中使用尖括号表示的是“非” grep '[^Gg]ood' RegExp.txt
使用“.”号
#搜索包含一个词,该词以g开头,紧接着是两个任意字符、再接着是一个d的行 grep 'g..d' RegExp.txt
#搜索包含一个词,该词以G或g开头、紧接着是两个任意字符,再接着是一个d的行 grep '[Gg]..d' RegExp.txt
#搜索这样一些行,该行包含某个单词,该词满足如下条件: #1.第一个字符可以是G或g #2.第二个字符可以是l或o #3.第三个字符可以使换行符之外的任意字符 #4.第四个字符一定是d grep '[Gg][lo].d' RegExp.txt
使用精确匹配
#搜索含有gold的行 #从搜索结果中发现golden也匹配出来 grep 'gold' RegExp.txt
#正如上例所示,一般搜索时,想要搜索含有gold的行,发现golden也匹配了 #现在需要精确匹配含有gold这个单词的行 grep '<gold>' RegExp.txt
#用的效果和“<>”一致 grep 'gold' RegExp.txt
使用“*”号
#搜索这样一些行,该行包含某个单词,该单词满足如下条件: #1.以g开头 #2.g后面跟零到无限个o #3.零到无限个o后面跟d grep go*d RegExp.txt
使用"*."号
#1.以g开头 #2.g后面一定有字符 #3.最后是d grep 'g.*d' RegExp.txt
使用"-"号
#文件中有一些拼写错误的单词,发现是把glod中的o字母写成数字0了 grep 'g1[0-9]d' RegExp.txt
使用""做字符转义
#搜索文件中包含域名www.helloworld.com的行 #从搜索的结果来看,这里的"."号被解析成了除换行意外的任意字符 #想要把这个点只当做一个字符点来用,就需要对其使用转义符 grep 'www.helloworld.com' RegExp.txt
#这里将点做转义,则输出的结果满足预期 grep 'www.helloworld.com' RegExp.txt
使用“{}”号
#文档中有一个单词good被拼写错了,多写了几个o #搜索以字母g开头包含两个以上o的单词 grep 'go{2,}' RegExp.txt
#搜索以字母g开头,中间正好包含4个o的单词 grep 'go{4}' RegExp.txt
特殊的POSIX字符
#grep支持一些特殊的POSIX字符,举例如下 #[:alnum:] 文字数字字符 #[:alpha:] 文字字符 #[:digit:] 数字字符 #[:graph:] 非空字符(非空格、控制字符) #[:lower:] 小写字符 #[:cntrl;] 控制字符 #[:print:] 非空字符(包含空格) #[:punct:] 标点符号 #[:space:] 所有空白字符(新行,空格,制表符) #[:upper:] 大写字符 #[:xdigit:] 十六进制数字(0-9,a-f,A-F) #搜索以大写字母开头的行 grep ^[[:upper:]] RegExp.txt
#搜索以数字开头的行 grep ^[[:digit:]] RegExp.txt
使用扩展的正则表达式egrep
#搜索g和d之间至少有一个0的行 #“+”代表匹配前面的字符1次以上(含一次) egrep 'go+d' RegExp.txt
#搜索g和d之间只有0个或者1个o的行(0次或1次) #“?”代表匹配前面的字符1次以上 egrep 'go?d' RegExp.txt
#搜索glad或gold的行 egrep 'glad|gold' RegExp.txt
#搜索有glad或者gold的行的另外一种写法 egrep 'g(la|ol)d' RegExp.txt
以上是关于linux学习-grep使用正则表达式示例的主要内容,如果未能解决你的问题,请参考以下文章