grep及正则表达式,grep命令使用正则表达式实例,grep用法详解 grep与正则表达式

grep及正则表达式,grep命令使用正则表达式实例,grep用法详解 grep与正则表达式 首先要记住的是:正则表达式不同于通配符,它们的含义是不同的! 正则表达式只是一种表示。只要工具支持这种表示,工具就可以处理正则表达式字符串。Vim、grep、awk、sed都支持正则表达式,也正是因为支持正则性,所以才强大;在我以前工作的公司,因为公司是基于web的服务网站(nginx),对规律性的需求比例较大,所以我也花了一些时间学习规律性。我想与你分享: 1基本正则表达式grep工具,之前介绍过。Grep -[acinv]'搜索内容字符串' filename -a搜索为文本文件-c统计找到的匹配行数-我忽略case -n顺便输出行号-v逆向选择,即找到一行没有搜索字符串的行,其中搜索字符串可以是正则表达式! 1搜索带有的行,并输出行号$ grep-n ' the ' regular _ express . txt以搜索不带的行,并输出行号$ grep-NV ' the ' regular _ express . txt。 2用[]搜索集字符[]表示其中一个字符,例如,[ade]表示A或D或EWODY @ XIAOC:~/tmp $ grep-n t[AE]ST ' regular _ express . txt 8:我考不完9:哦!这汤味道不错! 您可以使用符号作为[]中的前缀来表示[]中的字符以外的字符。比如搜索oo前没有G字符串的那一行。使用'[g] OO '作为搜索字符串woody @ Xiao:~/tmp $ grep-n '[g]OO ' regular _ express . txt 2:苹果是我最喜欢的食物。足球比赛不仅仅是用脚。18:谷歌是搜索关键词的最佳工具。19:goooooogle是的! []可以用一个范围来表示,比如[a-z]表示小写字母,[0-9]表示从0到9的数字,[A-Z]表示大写字母。【a-zA-Z0-9】表示所有数字和英文字符。当然也可以配合排除字符。搜一下线woody @ Xiao:~/tmp $ grep-n '[0-9]' regular _ express . txt 5:不过这件衣服大概3183美元15:你是最好的is菜单你是No.1 字符$。行首和行尾表示行首,$表示行尾(不是字符,是位置)。那么' $ '表示空行,因为只有行首和行尾。此处的含义与[]中使用的含义不同。指示它后面的字符串位于行首。例如,搜索woody @ xiaoc:~/tmp $ grep-n ' the ' regular _ express . txt 12:符号' * '表示为星号。 搜索以小写字母' regular_express.txt 2:苹果是我最喜欢的食物'开头的行woody @ Xiao:~/tmp $ grep-n '[a-z]。这件衣服不适合我。10:摩托车比汽车便宜。12:符号' * '表示为星形。18:谷歌是搜索关键词的最佳工具。19:goooooogle是的!20:走!走吧。我们走吧。woody @ Xiao:~/tmp $ 搜索行woody @ xiaoc:~/tmp $ grep-n '[a-za-z]' regular _ express . txt 1:'开源'是开发程序的好机制21: #我是vbirdwoody @ xiaoc: ~/tmp $ $表示它之前的字符串位于行尾,例如“\ .”表明。在一行的末尾,是woody @ Xiao:~/tmp $ grep-n ' \。$ ' regular _ express.txt//.is正则表达式的一个特殊符号,所以用\ Escape 1:“开源”是开发程序的一个好机制。2:苹果是我最喜欢的食物。3:足球比赛不是用来感觉的。4:这件衣服不适合。我。5:不过这件衣服大概3183美元。6:GNU是免费空气不是免费啤酒。 注意MS系统下生成的文本文件,新的一行会加一个M字符。所以最后一个字符会隐藏M,所以在Windows下处理文字的时候要特别注意!您可以使用cat dos_file | tr -d '\r' unix_file删除m符号。^M==\r 那么' $ '就是说行首和行尾只有空行!搜索空行woody @ Xiao:~/tmp $ grep-n ' $ ' regular _ express . txt 22:23:woody @ Xiao:~/tmp $ 搜索非空行woody @ Xiao:~/tmp $ grep-VN '^$' regular _ express . txt 1:'开源'是开发程序的好机制。2:苹果是我最喜欢的食物。足球比赛不仅仅是用脚。这件衣服不适合我。. 任何角色。和重复字符* 在bash中,*代表通配符,用于表示任何字符,但是在正则表达式中,它有不同的含义。*表示有0个或更多字符。例如,oo*表示第一个O必须存在,第二个O可以有一个或多个,也可以没有,所以它至少代表一个O . 点。表示任意字符,并且必须存在。g?d可以用‘g’来表示.d '很好,gxxd,gabd.都合适。 woody @ Xiao:~/tmp $ grep-n ' g.d' regular_express.txt 1:'开源'是开发程序的好机制。9:哦!这汤味道不错!16:世界同‘欢喜’。woody @ Xiao:~/tmp $ 搜索两个以上O的字符串woody @ Xiao:~/tmp $ grep-n ' ooo * ' regular _ express.txt//The前两个O必须存在,但第三个O可以不存在,也可以是多个。1:“开源”是开发程序的好机制。2:苹果是我最喜欢的食物。足球比赛不仅仅是用脚。9:哦!这汤味道不错!18:谷歌是搜索关键词的最佳工具。19:goooooogle是的! 搜索g的开头和结尾,中间至少有一个O,即gog,goog.谷歌.等等。woody @ Xiao:~/tmp $ grep-n ' goo * g ' regular _ express . txt 18:Google是搜索关键词最好的工具19: goooooogle没错! 搜索行woody @ Xiao:~/tmp $ grep-n ' g . * g ' regular _ express.txt//.* 0或更多任意字符1:“开源”是开发程序的好机制14:GD软件是起草程序的库18: Google是搜索关键字的最佳工具19: goooooogle yes!20:走!走吧。我们走吧。 限制连续重复字符{}的范围。*只能限制0或更多。如果要精确限制重复字符的数量,请使用{range}。是一个范围数,用2隔开,5代表2~5,2代表2,2代表2,2代表更多关注。因为{}在SHELL中有特殊的含义,所以当它作为正则表达式使用时,应该用\进行转义。 搜索包含两个O的字符串中的一行woody @ xiaoc:~/tmp $ grep-n ' O \ { 2 \ } ' regular _ express . txt 1:'开源'是开发程序的好机制。2:苹果是我最喜欢的食物。足球比赛不仅仅是用脚。9:哦!这汤味道不错!18:谷歌是搜索关键词的最佳工具。19:goooooogle是的! 搜索字符串后接2~5个O后接一个g . woody @ xiaoc:~/tmp $ grep-n ' go \ { 2,5 \ } g ' regular _ express . txt 18:Google是搜索关键字的最佳工具。 搜索包含G后跟2个以上O后跟G的行。woody @ Xiao:~/tmp $ grep-n ' go \ { 2,\ } g ' regular _ express . txt 18:Google是搜索关键词最好的工具。19:goooooogle是的! 注意[]中的-没有特殊含义,可以放在[]中内容的后面。'[^a-z\.-]'表示没有小写字母,没有,没有!没有空格,没有字符串的-,注意[]里有一个小空格。 另外,外壳中的反向选择是[!范围],常规内部是[范围] 2扩展正则表达式 扩展正则表达式向基本正则表达式添加了几个特殊组件。使得一些操作更加方便。比如我们要去掉空行和开头带#的行,它是这样工作的:woody @ Xiao:~/tmp $ grep-v ' $ ' regular _ express . txt | grep-v ' # ' '开源是开发程序的好机制。苹果是我最喜欢的食物。足球比赛不仅仅是用脚。这件衣服不适合我。. 但是,使用支持扩展正则表达式和扩展特殊符号|的egrep要方便得多。注意grep只支持基本表达式,egrep支持扩展表达式。实际上,egrep只是grep -E e的别名,因此,grep -E支持扩展正则化。然后:woody @ Xiao:~/tmp $ egrep-v ' $ | # Regular _ express . txt '开源'是开发程序的好机制。苹果是我最喜欢的食物。足球比赛不仅仅是用来感觉的。这件衣服不适合我。..这里|表示或的关系。即满足$或#的字符串。 下面是几个扩展的特殊符号:+,类似于。*,表示一个或多个重复字符。类似于。*,表示0或一个字符。|,表示或关系,例如,' gd|good|dog '表示带有gd、good或dog的字符串(),将某些内容组合成一个单位组。例如,如果你想搜索高兴或良好,你可以这样做。' g(la|oo)d '()的好处是可以分组使用?*等等。例如,要搜索在A和C的开头和结尾之间至少有一个(xyz)的字符串,可以这样做:“A(xyz) C”

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: