Linux中grep命令,用或的关系查询多个字符串,正则表达式基础说明
请尊重版权:原文: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命令,用或的关系查询多个字符串,正则表达式基础说明的更多相关文章
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- linux中grep命令的使用
转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...
- Linux中grep命令的12个实践例子
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...
- Linux中grep命令学习
1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小 ...
- linux中grep命令的用法
作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:[grep [选项] "模式" [ ...
- Linux 中 grep 命令的 12 个实践例子
2017-10-17 Linux小管家 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件 ...
- linux中grep命令
grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字 ...
- linux中grep命令详解
http://jingyan.baidu.com/article/76a7e409e72777fc3b6e158a.html
- linux中uptime命令获取主机运行时间和查询系统负载信息
系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...
随机推荐
- 【SpingBoot】 测试如何使用SpringBoot搭建一个简单后台1
很久没写博客了,最近接到一个组内的测试开发任务是做一个使用SpringBoot 开发一个后台程序(还未完成),特写感想记录一下 1. 为什么选择SpringBoot ? 首先是目前很多公司的后台还是J ...
- 【Unity系统知识】关于SendMessage的用法
[Message相关有3个函数] 一.功能:用于向某个GameObject发送一条信息,让它完成特定功能. 1.执行GameObject自身的Script中“函数名”的函数SendMessage (& ...
- 私有IP地址
私有IP地址: 在ABC三类网络中,如下三段网络地址为私有IP地址,如何人都可以自行在自己的局域网中使用这些IP地址. A类私有:10.0.0.1----10.255.255.254 B类私有:172 ...
- jmeter中如何使用csv文件并读取数据
我现在要测试一个新的网站,需要负载测试这个功能“加入购物车”.要做到 这一点,我需要模拟多个用户登录并进行购物操作,具体的场景为每一个人将同样的物品加入到购物车. JMeter 处理这些请求完全没有问 ...
- python学习第四天-函数
函数 def开头 函数参数 其中name.age.sex为形参,'王锦时',21,'男'为实参 函数返回值 默认参数 关键字参数 收集参数 相当于把所有实参存在一个元组当中 收集参数和关键字参数的混 ...
- 50.Maximal Square(最大正方形)
Level Medium 题目描述: Given a 2D binary matrix filled with 0's and 1's, find the largest square conta ...
- Python二分查找算法
Python 二分查找算法: 什么是二分查找,二分查找的解释: 二分查找又叫折半查找,二分查找应该属于减值技术的应用,所谓减值法,就是将原问题分成若干个子问题后,利用了规模为n的原问题的解与较小规模( ...
- c# 微服务Ocelot网关服务发现
前面提到微服务方案,介绍了该东西,推荐一篇介绍博文https://www.cnblogs.com/jesse2013/p/net-core-apigateway-ocelot-docs.html 我要 ...
- 数据库设计-Mysql数据库表设计的过程中几个关键点
一.表设计过程中应该注意的数据类型 1)更小的通常更好 控制字节长度 2)使用合适的数据类型: 如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长 ...
- js自增++与自减--运算符
/** * 自增(++)与自减(--)运算符 */ // 自增示例 var a = 1, c, d, e; console.log(`a++ = ${a++}`); // a++ = 1 consol ...