请尊重版权:原文:https://blog.csdn.net/lkforce/article/details/52862193

使用 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

匹配e和e之间有任意一个字符,可以匹配eee,eae,eve,但是不匹配ee。

\

转义字符。

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

grep –n ‘\” regular.txt

*

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

例如匹配gle,gogle,google,gooogle等等

grep –n ‘go*gle’ regular.txt

[list]

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

例如:匹配gl,gf。

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

[n1-n2]

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

例如:匹配数字字符

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

[^list]

匹配字符集以外的字符

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

匹配非o字符

\{n1,n2\}

前面的字符重复n1,n2次

例如:匹配google,gooogle。

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到多次。

例如:匹配god,good,goood等等字符串。

grep –nE go+d’ regular.txt

?

匹配0或1次前面的字符

例如,匹配gd,god

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到多次。

例如匹配gle,gogle,google,gooogle等等

grep –nE ‘go*gle’ regular.txt

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

  1. 12个 Linux 中 grep 命令的超级用法实例

    12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...

  2. linux中grep命令的使用

    转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...

  3. Linux中grep命令的12个实践例子

    grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...

  4. Linux中grep命令学习

    1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小 ...

  5. linux中grep命令的用法

    作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:[grep  [选项]  "模式"  [ ...

  6. Linux 中 grep 命令的 12 个实践例子

    2017-10-17 Linux小管家 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件 ...

  7. linux中grep命令

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字 ...

  8. linux中grep命令详解

    http://jingyan.baidu.com/article/76a7e409e72777fc3b6e158a.html

  9. linux中uptime命令获取主机运行时间和查询系统负载信息

    系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...

随机推荐

  1. LeetCode 数组中两个数的最大异或值

    题目链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/ 题目大意: 略. 分析: 字典树 + 贪心. ...

  2. Write File in Vugen

    Write a parameter to a text file in loadrunner script   char *filename = "c:\\myfilename.txt&qu ...

  3. Cocos2d-x之Menu

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. cocos2d-x菜单简介: 菜单也是游戏开发中的重要环节,一般游戏开始的第一个画面都是游戏主菜单,这些菜单包括,开始游戏,游戏设置,关卡 ...

  4. ES6中的CLASS继承

    ES6中的CLASS继承:https://www.jianshu.com/p/3d3d52b47762 es6 javascript的Class 类的继承:https://blog.csdn.net/ ...

  5. v-cloakd的应用场景和使用方法

    使用vue构建前端应用,加载应用后页面可能会出现闪烁: <div id="app" v-cloak> {{message}} </div> 例如上述场景,应 ...

  6. Hibernate入门教程(二):Hibernate核心API

    1.Configuraction onfiguration configuration = new Configuration(); configuration.configure(); 到src下面 ...

  7. Ptyhon 合并列表

    2019-08-25 list1 =  [91, 95, 97, 99] list2 =  [92, 93, 96, 98] 合并后得到:[91, 95, 97, 99 , 92, 93, 96, 9 ...

  8. 八、hibernate的查询(HQL)

    HQL:Hibernate Query Language 提供更加丰富灵活.更为强大的查询能力 HQL更接近SQL语句查询语法 面向对象的查询 "from Children where ci ...

  9. NSQ消息队列

    前面的总结中提到过这个玩意,所以简单说说,win上面的测试验证 网上有比较合适的博文,我先推荐几篇 https://blog.csdn.net/a2247889821/article/details/ ...

  10. dotNET面试(二)

    值类型与引用类型 1.值类型和引用类型的区别? 值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等. 赋值方式:将一个值类型变量赋给另一个值类型变量时,将复制包含的值. ...