如何使用grep 查找单词精确匹配一个单词

grep 命令系列:使用 grep 命令来搜索多个单词_Linux教程_Linux公社-Linux系统门户网站
你好,游客
grep 命令系列:使用 grep 命令来搜索多个单词
来源:Linux中国&
作者:Linux
要使用 grep 命令来搜索多个字符串或单词,我们该怎么做?例如我想要查找 /path/to/file 文件中的 word1、word2、word3 等单词,我怎么样命令 grep 查找这些单词呢?
匹配模式。要使用多单词搜索,请使用如下语法:
grep'word1\|word2\|word3'/path/to/file
下的例子中,要在一个名叫 /var/log/messages 的文本日志文件中查找 warning、error 和 critical 这几个单词,输入:
$ grep'warning\|error\|critical'/var/log/messages
仅仅只是要匹配单词(即该词两侧是单词分界符,针对西方以空格分隔的语言而言)的话,可以加上 -w 选项参数:
$ grep-w'warning\|error\|critical'/var/log/messages
egrep 命令可以跳过上面的语法格式,其使用的语法格式如下:
$ egrep -w'warning|error|critical'/var/log/messages
我建义您们加上 -i (忽略大小写) 和 --color 选项参数,如下示:
$ egrep -wi --color 'warning|error|critical'/var/log/messages
输出示例:
Fig.01: Linux / Unix egrep Command Search Multiple Words Demo Output
图一: Linux / Unix egrep 命令查找多个单词输出例子
grep使用简明及正则表达式
正则表达式的用法
正则表达式之零宽断言
Linux命令-文件文本操作grep&
grep正则表达式
Linux中正则表达式与文件格式化处理命令(awk/grep/sed)
本文永久更新链接地址:
相关资讯 & & &
& (09月01日)
& (07月24日)
& (09月17日)
& (07月28日)
& (06月03日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款2013年7月 Linux/Unix社区大版内专家分月排行榜第二2012年6月 Linux/Unix社区大版内专家分月排行榜第二2011年5月 Linux/Unix社区大版内专家分月排行榜第二2011年4月 Linux/Unix社区大版内专家分月排行榜第二2011年3月 Linux/Unix社区大版内专家分月排行榜第二2010年10月 Linux/Unix社区大版内专家分月排行榜第二2010年9月 Linux/Unix社区大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第三2010年12月 Linux/Unix社区大版内专家分月排行榜第三2010年11月 Linux/Unix社区大版内专家分月排行榜第三2010年9月 C/C++大版内专家分月排行榜第三
2011年1月 Linux/Unix社区大版内专家分月排行榜第二2010年12月 Linux/Unix社区大版内专家分月排行榜第二2010年11月 Linux/Unix社区大版内专家分月排行榜第二
2011年11月 Linux/Unix社区大版内专家分月排行榜第三2011年10月 Linux/Unix社区大版内专家分月排行榜第三2011年6月 Linux/Unix社区大版内专家分月排行榜第三2011年5月 Linux/Unix社区大版内专家分月排行榜第三2011年4月 Linux/Unix社区大版内专家分月排行榜第三2011年3月 Linux/Unix社区大版内专家分月排行榜第三2011年2月 Linux/Unix社区大版内专家分月排行榜第三2010年5月 Linux/Unix社区大版内专家分月排行榜第三
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年1月 Linux/Unix社区大版内专家分月排行榜第二2010年12月 Linux/Unix社区大版内专家分月排行榜第二2010年11月 Linux/Unix社区大版内专家分月排行榜第二
2011年11月 Linux/Unix社区大版内专家分月排行榜第三2011年10月 Linux/Unix社区大版内专家分月排行榜第三2011年6月 Linux/Unix社区大版内专家分月排行榜第三2011年5月 Linux/Unix社区大版内专家分月排行榜第三2011年4月 Linux/Unix社区大版内专家分月排行榜第三2011年3月 Linux/Unix社区大版内专家分月排行榜第三2011年2月 Linux/Unix社区大版内专家分月排行榜第三2010年5月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。grep 或 egrep 或awk 过滤两个或多个关键词|使用grep匹配“与”或者“或”模式 - CSDN博客
grep 或 egrep 或awk 过滤两个或多个关键词|使用grep匹配“与”或者“或”模式
grep 或 egrep 或awk 过滤两个或多个关键词|使用grep匹配“与”或者“或”模式
grep 或 egrep 或awk 过滤两个或多个关键词:
grep -E '123|abc' filename&&// 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename& & //用egrep同样可以实现
awk&'/123|abc/'&&filename // awk 的实现方式
使用grep匹配“与”或者“或”模式:
g r e p一般格式为:
grep [选项]基本正则表达式[文件]
这里基本正则表达式可为字符串。单引号双引号
在g r e p命令中输入字符串参数时,最好将其用双引号括起来。
在调用模式匹配时,应使用单引号。
例如:“m y s t r i n g”。这样做有两个原因,一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串。
在调用变量时,也应该使用双引号,诸如: g r e p“$ M Y VA R”文件名,如果不这样,将没有返回结果。
常用的g r e p选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。 开始讨论之前,先生成一个文件,插入一段文本,并在每列后加入& Ta b &键,g r e p命令示例中绝大多数将以此为例,其命名为d a t a . . f。生成一个文件,d a t a . f的记录结构如下:
第1列:城市位置编号。
第2列:月份。
第3列:存储代码及出库年份。
第4列:产品代号。
第5列:产品统一标价。
第6列:标识号。
第7列:合格数量。文件内容如下:
$ cat data.f
48 && Dec &&& 3BC1977 LPSX 68.00 LVX2A 138
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
47 && Oct &&& 3ZL1998 LPSX 43.00 KVM9D 512
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
484 &&& nov &&& 7PL1996 CAD &&& 49.00 PLV2C 234
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 644
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 2341、查询多个文件
在所有文件中查询单词“ sort it”
$ grep &sort it& *2、 行匹配
1)显示包含“4 8”字符串的文本:
$ grep&& &48&data.f2)输出匹配行的总数
$ grep -c &48&data.f
4 g r e p返回数字4,表示:包含字符串“4 8”的有4行。
显示满足匹配模式的所有行行数:
$ grep -n &48&data.f 行数在输出第一列,后跟包含4 8的每一匹配行。
4)显示非匹配行
显示所有不包含4 8的各行
$ grep -v &48&data.f5)精确匹配
可能大家已注意到,在上一例中,抽取字符串“ 4 8”,返回结果包含诸如4 8 4和4 8 3等包含“4 8”的其他字符串,实际上应精确抽取只包含4 8的各行。
使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加\ &。假定现在精确抽取4 8,方法如下:
$grep &48\&& data.f
另一种方法我试过,好像不行:
注意在每个匹配模式中抽取字符串后有一个& Ta b &键,所以应操作如下:
& Ta b &表示点击t a b键。
$grep &48&tab&& data.f6)大小写敏感
缺省情况下, g r e p是大小写敏感的,如要查询大小写不敏感字符串,必须使用- i开关。在d a t a . f文件中有月份字符S e p t,既有大写也有小写,要取得此字符串大小写不敏感查询,方法如下:
$grep -i &48& data.fgrep和正则表达式
使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止g r e p中使用的专有模式与一些s h e l l命令的特殊方式相混淆。
&& && && && && && && && && && && && && && && && && && && && && && && && &&&
1、模式范围
抽取代码为4 8 4和4 8 3的城市位置,可以使用[ ]来指定字符串范围。
$ grep &48[34]& data.f
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
484 &&& nov &&& 7PL1996 CAD &&& 49.00 PLV2C 234
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 6442、不匹配行首
使行首不是4或8,可以在方括号中使用^记号。
$ grep &^[^48]& data.f
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 234如果是字符串48
$ grep -v &^[^48]& data.f3、设置大小写
使用- i开关可以屏蔽月份S e p t的大小写敏感
[sam@chenwy sam]$ grep -i &sept& data.f
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 234 也可以用另一种方式[ ]模式抽取各行包含S e p t和s e p t的所有信息。
[sam@chenwy sam]$ grep '[sS]ept' data.f 如果要抽取包含S e p t的所有月份,不管其大小写,并且此行包含字符串483,可以使用管道命令,即符号“|”左边命令的输出作为“ |”右边命令的输入。举例如下:
[sam@chenwy sam]$ grep '[sS]ept' data.f | grep 48
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189 不必将文件名放在第二个g r e p命令中,因为其输入信息来自于第一个g r e p命令的输出
&& && && && && && && && && && && && && && && && && && && && && && && && &&&
4、匹配任意字符
如果抽取以K开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
[sam@chenwy sam]$ grep 'K...D' data.f
47 && Oct &&& 3ZL1998 LPSX 43.00 KVM9D 512
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 644 将上述代码做轻微改变,头两个是大写字母,中间两个任意,并以C结尾:
[sam@chenwy sam]$ grep '[A-Z]..C' data.f
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
484 &&& nov &&& 7PL1996 CAD &&& 49.00 PLV2C 2345、日期查询
一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5 . . 1 9 9 [ 6 , 8 ]。这意味着第一个字符为5,后跟两个点,接着是1 9 9,剩余两个数字是6或8。
[sam@chenwy sam]$ grep '5..199[6,8]' data.f
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 6446、范围组合
必须学会使用[ ]抽取信息。假定要取得城市代码,第一个字符为0-9,第二个字符在0到5之间,第三个字符在0到6之间,使用下列模式即可实现。
[sam@chenwy sam]$ grep '[0-9][0-5[0-6]' data.f
48 && Dec &&& 3BC1977 LPSX 68.00 LVX2A 138
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
47 && Oct &&& 3ZL1998 LPSX 43.00 KVM9D 512
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
484 &&& nov &&& 7PL1996 CAD &&& 49.00 PLV2C 234
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 644
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 234 这里返回很多信息,有想要的,也有不想要的。参照模式,返回结果是正确的,因此这里
[sam@chenwy sam]$ grep '^[0-9][0-5][0-6]' data.f
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 234 这样可以返回一个预期的正确结果。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7、模式出现机率
抽取包含数字4至少重复出现两次的所有行,方法如下:
[sam@chenwy sam]$ grep '4\{2,\}' data.f
483 &&& may &&& 5PA1998 USP &&& 37.00 KVM9D 644 上述语法指明数字4至少重复出现两次,注意有无边界字符的区别。 && && && && && && && && && && && && && && && && && && && && && && && && &&&
同样,抽取记录使之包含数字9 9 9(三个9),方法如下:
[sam@chenwy sam]$ grep '9\{3,\}' data.f
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68 如果要查询重复出现次数一定的所有行,语法如下,数字9重复出现两次或三次:
[sam@chenwy sam]$ grep '9\{3\}' data.f
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
[sam@chenwy sam]$ grep '9\{2\}' data.f
483 &&& Sept 5AP1996 USP &&& 65.00 LVX2C 189
47 && Oct &&& 3ZL1998 LPSX 43.00 KVM9D 512
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
484 &&& nov &&& 7PL1996 CAD &&& 49.00 PLV2C 234 有时要查询重复出现次数在一定范围内,比如数字或字母重复出现2到6次,下例匹配数字8重复出现2到6次,并以3结尾:
[sam@chenwy sam]$ cat myfile
[sam@chenwy sam]$ grep '8\{2,6\}3' myfile
888838、使用grep匹配“与”或者“或”模式
g r e p命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
[sam@chenwy sam]$ grep -E '219|216' data.f
219 &&& dec &&& 2CC1999 CAD &&& 23.00 PLV2C 68
216 &&& sept 3ZL1998 USP &&& 86.00 KVM9E 2349、空行
结合使用^和$可查询空行。使用- c参数显示总行数:
[sam@chenwy sam]$ grep -c '^$' myfile 使用- n参数显示实际在哪一行:
[sam@chenwy sam]$ grep -c '^$' myfile10、匹配特殊字符
查询有特殊含义的字符,诸如$ . ' & * [] ^ | \ + ? ,必须在特定字符前加\。假设要查询包含“.”的所有行,脚本如下:
[sam@chenwy sam]$ grep '\.' myfile 或者是一个双引号:
[sam@chenwy sam]$ grep '\&' myfile 以同样的方式,如要查询文件名c o n f t r o l l . c o n f(这是一个配置文件),脚本如下:
[sam@chenwy sam]$ grep 'conftroll\.conf' myfile11、查询格式化文件名
使用正则表达式可匹配任意文件名。系统中对文本文件有其标准的命名格式。一般最多六个小写字符,后跟句点,接着是两个大写字符。
[sam@chenwy sam]$ grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename 这个写法我不知道有没有错 :oops:&& :oops:&& :oops:&
&& && && && && && && && && && && && && && && && && && && && && && && && &&&
12 查询IP地址
要查看n n n . n n n网络地址,如果忘了第二部分中的其余部分,只知有两个句点,例如n n n . n n . .。要抽取其中所有nnn.nnn IP地址,使用[ 0 - 9 ] \ { 3 \ } \ . [ 0 - 0 \ { 3 \ } \。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。
[0-9]\{3\}\.[0-9]\{3\}\.'1、类名
g r e p允许使用国际字符模式匹配或匹配模式的类名形式。
类名及其等价的正则表达式类等价的正则表达式类等价的正则表达式
[ [ : u p p e r : ] ] [ A - Z ] [ [ : a l n u m : ] ] [ 0 - 9 a - zA-Z]
[ [ : l o w e r : ] ] [ a - z ] [ [ : s p a c e : ] ] 空格或t a b键
[ [ : d i g i t : ] ] [ 0 - 9 ] [ [ : a l p h a : ] ] [ a - z A - Z ] 例一:取以5开头,后跟至少两个大写字母:
$grep '5[[:upper:]][[:upper]]' data.f 取以P或D结尾的所有产品代码:
grep '[[:upper:]][[:upper:]][P,D]' data.f2、使用通配符*的匹配模式
$cat testfile
long 试试如下:
grep &l.*s& testfile 如在行尾查询某一单词,试如下模式:
grep &ng$& testfile 这将在所有文件中查询行尾包含单词ng的所有行。
3、系统grep
文件passwd
[root@Linux_chenwy sam]# grep &sam& /etc/passwd
sam:x:506:4::/usr/sam:/bin/bash 上述脚本查询/ e t c / p a s s w d文件是否包含sam字符串
如果误输入以下脚本:
[root@Linux_chenwy sam]# grep &sam& /etc/password
grep: /etc/password: 没有那个文件或目录 将返回g r e p命令错误代码'No such file or directory'。
上述结果表明输入文件名不存在,使用g r e p命令- s开关,可屏蔽错误信息。
返回命令提示符,而没有文件不存在的错误提示。
[root@Linux_chenwy sam]# grep -s &sam& /etc/password 如果g r e p命令不支持- s开关,可替代使用以下命令:
[root@Linux_chenwy sam]# grep &sam& /tec/password &/dev/null 2&&1 脚本含义是匹配命令输出或错误( 2 & $ 1),并将结果输出到系统池。大多数系统管理员称/ d e v / n u l l为比特池,没关系,可以将之看成一个无底洞,有进没有出,永远也不会填满。
上述两个例子并不算好,因为这里的目的只想知道查询是否成功。
如要保存g r e p命令的查询结果,可将命令输出重定向到一个文件。
[root@Linux_chenwy sam]# grep &sam& /etc/passwd &/usr/sam/passwd.out
[root@Linux_chenwy sam]# cat /usr/sam/passwd.out
sam:x:506:4::/usr/sam:/bin/bash 脚本将输出重定向到目录/ t m p下文件p a s s w d . o u t中。
本文已收录于以下专栏:
相关文章推荐
adb logcat -c; adb logcat -v time | grep '\(add track (\|Track constructor name \|: remove tra...
  grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
  egrep '123|abc' filename   ...
转自:/chengxcwl1314/blog/item/abde5d57cd92a80.html
grep 或 egrep 或awk 过滤两个...
grep --help
-E, --extended-regexp     PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
‘egrep’即‘grep -E’。
匹配单个,...
背景:这周请了几天假,25号早上来了,就开始搞MongoDB数据库分片集群环境的整体迁移,起初以为很容易,但是在迁移的过程中,遇到了各种问题。还好经过两天的研究,现在终于搞定!匆忙之中,整理了一下文档...
以下代码经过测试通过,系统centos 6.3
一、匹配或
sed 匹配100_1000或bigger_1000
sed -n '/100_1000\|bigger_1000/p...
转自:http://blog.csdn.net/k/article/details/8625148
Linux下find一次查找多个指定文件或者排除某类文件,在 GREP 中匹配多个关键字的方法
(1)Linux下find一次查找多个指定文件:
查找a.html和b.html
最近查日志和文件所以管道grep命令用的多一点,一些比较实用的方法就收藏转载一下,请支持原版,原文地址是:/smallrookie/p/7058278.ht...
管道使用 不包含单词(关键字)
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)grep 精确匹配 - CSDN博客
grep 精确匹配
锚定单词的开始,如:\'
锚定单词的结束,如\'grep&\'匹配包含以grep结尾的单词的行。
单词锁定符,如: \'bgrepb\'只匹配grep。
$cat &data.f
m & & 48 & n
$grep &48\&& data.f & & &-----&48,m48& &&
$grep &\b48\b& data.f & &-------&48
本文已收录于以下专栏:
相关文章推荐
使用grep精确匹配一个单词
标签:的 abc
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究...
grep,查找字符串的意思,作用是在文件中匹配符合条件的字符串。1. 命令格式:grep [选项] 字符串 文件名 ...2. 常用选项:&grep -c& 统计匹配到'字符串'内容的行数。(c为co...
使用 grep 'word1|word2' 文件名  这样的命令是不对的!
应该使用如下的命令:
1,grep -E 'word1|word2' 文件名
2,egrep 'wor...
关于grep的精确匹配的方法file的内容:483 aa48484如果 grep 48 file,结果是三行全部都被显示如果想精确匹配48的那一行grep -w 48 file  aix 下好用关于-...
引自:/hzslqt/blog/item/dbd0ea4ede05d6.html
1. grep简介
    grep (globa...
声明:此原创非彼原创,资料来源于网络,只是经过加工整理罢了。如果引用了你的资料并没有说明出处,敬请原谅!仅供学习参考。
分辨率系列:
QSIF/QQVGA           16...
关键词:android  camera CMM 模组 camera参数
内核:linux
系统:android
平台:S5PV310(samsung exynos 4210) ...
本文转自http://blog.csdn.net/xubin341719/article/details/7723725
自己修改了一下;
里面讲的东西都比较基础;
一、摄像头模组(CCM)介绍...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 grep 精确匹配 的文章

 

随机推荐