Linux中grep命令,用或的关系查询多个字符串,正则表达式基础说明

原创 2016年10月19日 18:52:51
使用 grep 'word1|word2' 文件名  这样的命令是不对的!


应该使用如下的命令:

1,grep -E 'word1|word2' 文件名

2,egrep 'word1|word2' 文件名

3,grep 'word1/|word2' 文件名


为什么需要加-E,关于grep 和 egrep:


egrep 等同于 grep -E 。它会以扩展的正则表达式的模式来解释模式。下面来自 grep 的帮助页:
基本的正则表达式元字符 ?、+、 {、 |、 ( 和 ) 已经失去了它们原来的意义,要使用的话用反斜线的版本 /?、/+、/{、/|、/( 和 /) 来代替。 传统的 egrep 并不支持 { 元字符,一些 egrep 的实现是以 /{ 替代的,所以一个可移植的脚本应该避免在 grep -E 使用 { 符号,要匹配字面的 { 应该使用 [}]。
GNU grep -E 试图支持传统的用法,如果 { 出在在无效的间隔规范字符串这前,它就会假定 { 不是特殊字符。
例如,grep -E ‘{1′ 命令搜索包含 {1 两个字符的串,而不会报出正则表达式语法错误。

POSIX.2 标准允许这种操作的扩展,但在可移植脚本文件里应该避免这样使用。


关于正则表达式的基本分类:

1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs) 
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs) 
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs) 

关于基本正则表达式和扩展正则表达式的一些用法:

基本正则表达式

元数据

意义和范例

^word

搜寻以word开头的行。

例如:搜寻以#开头的脚本注释行

grep –n ‘^#’ regular.txt

word$

搜寻以word结束的行

例如,搜寻以‘.’结束的行

grep –n ‘.$’ regular.txt

.

匹配任意一个字符。

例如:grep –n ‘e.e’ regular.txt

匹配ee之间有任意一个字符,可以匹配eeeeaeeve,但是不匹配ee

\

转义字符。

例如:搜寻是一个特殊字符,在正则表达式中有特殊含义。必须要先转义。

grep –n ‘\” regular.txt

*

前面的字符重复0到多次。

例如匹配glegoglegooglegooogle等等

grep –n ‘go*gle’ regular.txt

[list]

匹配一系列字符中的一个。

例如:匹配glgf

grep –n ‘g[lf]’ regular.txt

[n1-n2]

匹配一个字符范围中的一个字符。

例如:匹配数字字符

grep –n ‘[0-9]’ regular.txt

[^list]

匹配字符集以外的字符

例如:grep –n ‘[^o]‘ regular.txt

匹配非o字符

\{n1,n2\}

前面的字符重复n1n2

例如:匹配googlegooogle

grep –n ‘go\{2,3\}gle’ regular.txt

\<word

单词是的开头。

例如:匹配以g开头的单词

grep –n ‘\<g’ regular.txt

word\>

匹配单词结尾

例如:匹配以tion结尾的单词

grep –n ‘tion\>’ regular.txt


扩展正则表达式

     grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。

     扩展正则表达式就是在基本正则表达式的基础上,增加了一些元数据。

元数据

意义和范例

+

重复前面字符1到多次。

例如:匹配godgoodgoood等等字符串。

grep –nE go+d’ regular.txt

?

匹配01次前面的字符

例如,匹配gdgod

grep –nE ‘go?d’ regular.txt

|

或(or)的方式匹配多个字串  
例如:grep –nE ‘god|good’ regular.txt

匹配god或者good

()

匹配整个括号内的字符串,原来都是匹配单个字符

例如:搜寻good或者glad

grep –nE ‘g(oo|la)’ regular.txt

()

前面的字符重复0到多次。

例如匹配glegoglegooglegooogle等等

grep –nE ‘go*gle’ regular.txt

 


版权声明:本文为博主瞎抄的文章,未经博主允许可以随意转载。

grep多个关键字“与”和“或”

1、或操作   grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行   egrep '123|abc' filename   ...
  • yucan1001
  • yucan1001
  • 2013年01月22日 21:07
  • 21569

grep 查询多个字符串

grep 同时满足多个关键字和满足任意关键字 ① grep -E "word1|word2|word3"   file.txt    满足任意条件(word1、word2和word3之一)将匹...
  • chimei2345
  • chimei2345
  • 2014年05月15日 14:39
  • 1095

使用grep搜索多个单词或字串

语法 grep ‘pattern*’ file1 file2 egrep ‘pattern1|pattern2’ *.py grep -e pattern1 -e pattern2 *.pl 一些别的...
  • kangkanglou
  • kangkanglou
  • 2017年06月23日 20:57
  • 1207

Linux学习笔记--grep命令(搜索字符串命令)

grep,查找字符串的意思,作用是在文件中匹配符合条件的字符串。1. 命令格式:grep [选项] 字符串 文件名 ...2. 常用选项:"grep -c" 统计匹配到'字符串'内容的行数。(c为co...
  • daidaineteasy
  • daidaineteasy
  • 2016年03月07日 17:12
  • 8934

使用grep搜索代码的几个示例

又一篇烂大街的"grep"命令用法,本篇从码农读代码的角度,总结下我最常用的`grep`方式,也欢迎大家交流下`grep`的一些高级用法...
  • guyongqiangx
  • guyongqiangx
  • 2017年04月13日 19:17
  • 1417

grep-查找符合条件的字符串

grep:         查找行里符合条件的字符串 grep退出状态:     0: 表示成功;     1: 表示在所提供的文件无法找到匹配的pattern;     2: 表示...
  • u011748522
  • u011748522
  • 2014年09月17日 15:45
  • 2702

强大的grep用法详解:grep与正则表达式

from:http://hi.baidu.com/nearlove/blog/item/11db98b6b5b8aff831add1e5.html 首先要记住的是: 正则表达式与通配符不一样,它们表示...
  • tenfyguo
  • tenfyguo
  • 2011年05月03日 17:52
  • 58018

正则表达式 进阶(一)-- 匹配多连续字符、位置匹配、子表达式使用

之前一篇博文正则表达式 入门讲了下正则表达式的一些基本使用,这次讲一下高级的。还是那句话,要多用,才能够记住并留在你的大脑皮层。 1. 匹配一个或多个连续字符 用+符号, a+,意思是匹配...
  • wzzfeitian
  • wzzfeitian
  • 2013年05月22日 07:07
  • 78947

JMeter正则表达式提取多个字符串

例子提取单个字符串假设您想要匹配网页的以下部分: name =“file”value =“readme.txt”>, 并且要提取readme.txt。 一个合适的正则表达式是: name="file"...
  • yjlch1016
  • yjlch1016
  • 2017年11月25日 16:24
  • 671

使用正则表达式处理字符串中多个子串

起因 昨天工作时遇到这样一种需求:将检索出来的字符串中的关键字标记成红色,关键字的个数是不定的。猛一看其实挺简单的,但我一时却没有想到太好的办法,因为并不是简单地将目标字符串替换成统一的字符串,...
  • zhangyihui1986
  • zhangyihui1986
  • 2013年02月01日 10:55
  • 3068
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux中grep命令,用或的关系查询多个字符串,正则表达式基础说明
举报原因:
原因补充:

(最多只允许输入30个字)