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”

grep及正则表达式,grep命令使用正则表达式实例