如要匹配Computer或computer两个单词,可做如下操作: [Cc]mputer “.”允许匹配ASCII集中任意字符,或为字母,或为数字。 使用\{\}匹配模式结果出现的次数 匹配字母A出现两次,并以B结尾,操作如下: A\{2\}B 匹配A至少4次,使用: A\{4,\}B 如给出出现次数范围,例如A出现2次到4次之间: A\{2,4\}B 在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。这样做 有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串,例如: “jet plane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果 将返回“文件不存在”的错误信息。 在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。 这样做有两个原因: 一是以防被误解为shell命令, 二是可以用来查找多个单词组成的字符串,例如:“jet plane”, 如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。 在调用变量时,也应该使用双引号,诸如:grep "$MYVAR"文件名,如果不这样,将没有返回结果。 在调用模式匹配时,应使用单引号。 使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加\>。假定现在精确抽取48,方法如下:[???????????] #grep "48\>" data.f #grep -n "48\>" data.f #显示行号 缺省情况下,grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用-i开关。 使用正则表达式时最好用单引号括起来 假定要抽取代码为484和483的城市位置, #grep ‘48[34]‘ data.f 如果要抽出记录,使其行首不是48, #grep ‘^[^48]‘ data.f 抽取以L开头,以D结尾长度为5个字符的所有代码,可使用下述方法: #grep ‘L...D‘ data.f 查询所有以5开始以1996或1998结尾的所有记录 #grep ‘5..199[68]‘ data.f 第一个字符为任意数字,第二个字符在0到5之间,第三个字符在0到6之间: #grep ‘[0-9][0-5][0-6]‘ data.f #grep ‘^[0-9][0-5][0-6]‘ data.f #以行首开始 抽取包含数字4至少重复出现两次的所有行: #grep ‘4\{2,\}‘ data.f grep命令加-E参数,这一扩展允许使用扩展模式匹配。 例如,要抽取城市代码为219或216,方法如下: #grep -E ‘219|216‘ data.f 结合使用^和$可查询空行。使用- n参数显示实际行数: #grep -n ‘^$‘ data.f 匹配特殊字符查询有特殊含义的字符,诸如$.‘"*[]^|\+?,必须在特定字符前加\。 假设要查询包含“.”的所有行,脚本如下: #grep ‘\.‘ data.f #grep ‘\"‘ data.f 如要查询文件名conftroll.conf(这是一个配置文件),脚本如下: #grep ‘conftroll\.conf‘ myfile 最多六个小写字符,后跟句点,接着是两个大写字符, #grep ‘[a-z]\{1,6\}\.[A-Z]\{1,2\}‘ filename.deposit grep中通配符*的使用 #grep ‘l.*s‘ testfile #匹配如"looks" #grep ‘oo*‘ testfile #匹配如"looks" 在所有文件中查询行尾包含单词device的所有行 #grep ‘device$‘ * 查询目录列表中的目录,方法如下: #ls -l | grep ‘^d‘ 在一个目录中查询不包含目录的所有文件,方法如下: #ls -l | grep ‘^[^d]‘ 要查询其他用户和其他用户组成员有可执行权限的目录集合,方法如下: #ls -l | grep ‘^d....x..x‘
原文地址:http://www.cnblogs.com/dream-bccb/p/3991870.html