Linux文本过滤搜索器grep与egrep的常用正则表达式与用法

grep家族中的grep及egrep的相应的正则表达式和用法。

1.grep家族是文本处理三大剑客之一。(grep,sed,awk)

grep: (Global search REgular expression and Print out the line).其支持使用基本正则表达式.

egrep:支持使用扩展正则表达式

fgrep:不支持使用正则表达式(一般在大型web网站日志搜索时所使用)

grep的作用:过滤查找关键词并打印匹配的行。

grep的用法: grep [选项] 匹配模式 [文件]....

2. 正则表达式:Reguiar Expression,简称REGEX。

用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。

正则表达式分两类:基本正则表达式:BRE :扩展正则表达式:ERE

3.grep的几个常用选项:

--color=auto:显示颜色,(默认centos7已经被设置)

-n:显示行号

-c:统计符合要求的行数

-v:取反,不包含所选字符的

-i:不区分大小写

-w: 匹配单词

-q:静默模式,不输出任何信息

-o:仅显示匹配到的文本自身

4. 字符匹配:

.:匹配任意单个字符;

[]: 匹配范围内的任意单个字符;

[^  ]:非匹配范围内的任意单个字符:

5.匹配字数:用在要指定其出现的次数的字符后面,用限制其前面的字符要出现的次数;默认工作于贪婪模式

*:匹配前面的字符任意次(包括0次)图中画横杠的就表示其出现了0次

\+:匹配前面的字符至少1次: 与上一个图片对比,没有C的行,没有被匹配到。

.*:匹配任意长度任意字符

\?:匹配部分前面的0次或1次 主意:比如匹配"x+?y"模式中,"xxxyacn"也可被匹配到。

它是从Y往前1个单位查的”xy"。因为?表示0到1个,请不要搞混。

\{m\}:其前面的字符出现M次,M非负数

由图片我们可以看到当我们选择“c\{2\}"时表示c最少出现2次由于没有cc所以我们什么都没有匹配到,但当我们将c换成r时就可以匹配到很多。

\{m,n\}:其前面字符至少出现m次最多出现n次,例如r\{2,3\}。表示r最少出现2次最多出现3次

6.位置限定:限制模式匹配到的文本只能出现于目标文本的那个位置;

^:行首限定:^PATTERN

$:行尾限定:PATERN$

^PATERN$:空行。表示PATERN自己为完整的一行

因为/etc/passwd中没有b..h为一整行,所以没有匹配到。

“^$”:空白行

单词:由非特殊字符组成的连续字符包括字符串,都称为单词。

\<或\b:词首锚定,用于单词模式的左侧,格式为\<PATTERN, \bPATTERN

\>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b

\<PATTERN\>:单词锚定;

\(PATTERN\):将此PATTERN匹配到的字符当作一个不可侵害整体进行处理;

7.分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,

这些变量是\1, \2, \3, ...

pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)

\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而是模式匹配的结果)

\1:第一组括号中的pattern匹配到的字符串;(pat2\)

\2:第二组括号中的pattern匹配到的字符串;(pat4\(pat5\)pat6\)

\3: 第三组括号中的pattern匹配到的字符串;(pat5)

分组引用例子:

He love his lover.  *\(l..e\).*\1r  符合

He like his lover.  *\(l..e\).*\1r  不符合

He love his liker.  *\(l..e\).*\1r  不符合

He like his liker.  *\(l..e\).*\1r  符合

后向引用:引用前面的括号中的模式所匹配到的字符串:

8.常用选项之二:

-E, --extended-regexp:支持使用扩展正则表达式

-F, --fixed-strings:支持使用固定字符串,不支持正则表达式,相当于fgrep;

-G, --basic-regexp:支持使用基本正则表达式;

-P, --perl-regexp:支持使用pcre正则表达式

-e. PATTERN, --regexp=PATTERN:多模式机制;

-f FILE, --file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script;

-A NUM, --after-context=NUM表示每一行被隔开后还有显示后num行

-B NUM, --before-context=NUM 表示前面NUM行

-C NUM, -NUM, --context=NUM  表示前后各NUM行

9.egrep:支持使用扩展正则表达式的grep命令,它能完成grep能完成的和不能完成的命令。

相当于grep -E

用法:egrep [OPTIONS] PATTERN [FILE...]

其选项与grep 一样,这里就不在重新介绍了

扩展正则表达式的元字符:

字符匹配:

.:任意单个字符

[ ]:范围内的任意单个字符

[^ ]:范围外的任意单个字符

匹配次数:

*:任意次;

?:0次或1次;

+:1次或多次;无需转意

{m}:匹配m次;无需转意

{m,n}:至少m次,至多n次;无需转意

注意“\”转意符

位置锚定:

^:行首

$:行尾

\<, \b:词首

\>, \b:词尾

分组及引用:

(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;

后向引用:\1, \2, ...

或者:

a|b:a或者b

C|cat:表示C或cat

(C|c)at:表示Cat或cat。

本人是刚刚接触Linux运维不到2个星期的新人菜鸟,以前也完全没有学过计算机,完全的零基础。

对于grep,egrepd的正则表达式和用法,目前也就只能梳理出这点来。上述有错误的地方还请各位老师帮忙多多指正,本人万分感谢。

时间: 2024-10-14 12:11:37

Linux文本过滤搜索器grep与egrep的常用正则表达式与用法的相关文章

Linux命令之文本搜索工具grep、egrep、fgrep

grep即global search regular expression_r(RE) and print out the line,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep家族包括grep.egrep和fgrep:egrep是grep的扩展:fgrep查找一个或多个与给出的字符串或词组相匹配文件中的行,不支持规则表达式 语法:grep [OPTIONS] PATTERN [FILE...] 常用参数选项 --color=auto:对匹配到的串做高亮

Linux学习笔记:grep、egrep

文本处理三剑客: grep系:grep .egrep .fgrep ,文本搜索工具,基于"PATTERN"对于给定的文本进行模糊搜索,grep系默认工作于贪婪模式下. sed:Stream EDitor,流编辑器,行编辑器,文本编辑工具: awk:gawk--GUN awk,文本格式化工具,文本报告生成器,文本处理的编程语言: grep系: grep:利用正则表达式进行全局搜索并将匹配的行显示出来: grep [OPTIONS] PATTERN [FILE.....] PATTERN:

文本搜索之grep、egrep、egrep以及正则表达式

一.grep.egrep.fgrep命令 说明:本文在CentOS 6.6 X86_64系统下grep.egrep.fgrep命令和正则表达式的基本参数和使用格式.方法. 1.1.基本定义: grep(Global search Regular Expression ) and Print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来. grep是很常见也很常用的命令,它的主要功能是进行字符串数据

linux的正则、grep及egrep介绍

正则介绍: 解释对"正则表达式"的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其他工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,还是查询某个日志文件并分析其内容,都会用正则表达式. 其实正则表达式只是一种思想.一种表示方法.只要我们使用的工具支持这种表示方法,那么这个工具就可以处理正则表达式的字符

grep与egrep命令及正则表达式

在Linux中,有很多文本处理的方式,今天我们就来介绍其中的一种grep系. grep系相对来说也是功能很强大的文本处理工具,俗称文本三剑客之一(其余两个为sed.awk). grep系可分为grep.egrep.fgrep(默认情况下不开启正则表达式). grep系的功能:利用正则表达式全局搜索,并将匹配的都显示出来 grep的用法格式:  grep [options] PATTERN [FILE...] 其中PATTERN为要匹配的字符 先举个简单例子:[[email protected]

文本搜索工具grep,egrep,fgrep的区别

一.grep 1.用途:文本搜索工具,根据用户指定的文本模式(patten)对目标文件进行逐行搜索,显示能够被模式匹配的行内容. 2.命令使用格式: grep [option] ' PATTEN 'files- 2.1 常用选项详解 2.1.1 单文件查找: -n:显示匹配行的行号(为了显示清楚匹配行,下面的都用n+其他选项) -v :反向匹配(即显示非匹配行) –> 常用于过滤掉一些无关的信息,增加显示信息的可读性. ※第一个[5]就是指第5行被匹配. -o:只显示行中被模式所匹配的字符串,而

文本搜索工具Grep、Egrep的简单应用

 Grep是一个最初用于Unix操作系统的命令行工具.在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本. 使用格式: grep [选项] '内容' files   或 命令 | grep [选项] '内容' 常用选项: --color: 显示内容高亮 -v:反向选取(即显示除了用户定义的内容以外的内容) -o:仅显示匹配的内容 -i :忽略字符大小写 -E:使用扩展正则表达式  Egrep命令是一个搜索文件获得模式,使用该命令可

使用正则表达式配合文本搜索工具Grep以及Egrep快速搜索文本

正则表达式: 计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式由两类组成: 基本正则表达式与扩展正则表达式 基本正则表达式: 字符匹配 .:匹配单个字符 []:匹配指定集合中的任意单个字符 [:digit:]:所有数字(0-9) [:lower:]:所有小写字母(a-z) [:upper:]:所有大写字母(A-Z) [:space:]:空白符 [:punct:]:特殊字

linux 文件搜索命令 grep、-i、-v ^#

grep /bin/grepgrep -iv [指定字条串] [文件]在文件中搜索字符串匹配的行并输出-i 不区分大小写 -v 排除指定字符串 grep -i java /etc/profile grep -v ^# /etc/profile不显示以#开头的行 原文地址:https://www.cnblogs.com/BaiLaowu/p/9499505.html