grep与egrep命令及正则表达式

在Linux中,有很多文本处理的方式,今天我们就来介绍其中的一种grep系。

grep系相对来说也是功能很强大的文本处理工具,俗称文本三剑客之一(其余两个为sed、awk)。

grep系可分为grep、egrep、fgrep(默认情况下不开启正则表达式)。

grep系的功能:利用正则表达式全局搜索,并将匹配的都显示出来

grep的用法格式:  grep [options] PATTERN [FILE...]

其中PATTERN为要匹配的字符

先举个简单例子:[[email protected] ~]# grep -c root /etc/passwd

运行时就会在/etc/passwd目录下找出含有root的文件

其中root就是PATTERN

下面我们就重点来谈谈正则表达式。

正则表达式:

元字符:会被正则表达式引擎解释为特殊含义;

基本的正则表达式:BRE(grep默认使用)

扩展的正则表达式:ERE(egrep默认使用)

其中:

grep默认仅支持基本正则表达式;

egrep默认仅支持扩展正则表达式;

fgrep默认不开启正则表达式引擎;

文本字符:只具备字符表面含义的那些字符

grep系的选项有很多,下面列举一些比较常用的选项:

-i, --ignore-case

忽略模式 PATTERN 和输入文件中的大小写的分别。

-v, --invert-match

改变匹配的意义,只选择不匹配的行。反向匹配

-c, --count

禁止通常的输出;作为替代,为每一个输入文件打印一个匹配的行的总数。

-o, --only-matching

只显示匹配的行中与 PATTERN 相匹配的部分。关闭贪婪模式。

-q, --quiet, --silent

安静。不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值

0 退出,即使检测到了错误。 参见 -s 或 --no-messages 选项。

--colour[=WHEN], --color[=WHEN]

在匹配的行周围以  GREP_COLOR  环境变量中指定的记号来标记。WHEN

可以是 `never‘, `always‘, 或是 `auto‘。

-E, --extended-regexp(相当于egrep)

将模式 PATTERN 作为一个扩展的正则表达式来解释 (参见下面)。

-F, --fixed-strings(相当于fgrep)

将模式 PATTERN  视为一个固定的字符串的列表,用新行  (newlines)

分隔,只要匹配其中之一即可。

-G, --basic-regexp(相当于grep)

将模式  PATTERN  作为一个基本的正则表达式     (参见下面)

来解释。这是默认值。

-P, --perl-regexp

将模式 PATTERN 作为一个 Perl 正则表达式来解释。

-A NUM, --after-context=NUM

打印出紧随匹配的行之后的下文NUM行。在相邻的匹配组之间将会打印内容是 -- 的一行。

-B NUM, --before-context=NUM

打印出匹配的行之前的上文NUM行。在相邻的匹配组之间将会打印内容是 -- 的一行。

-C NUM, --context=NUM

打印出匹配的行的上下文前后各NUM行。在相邻的匹配组之间将会打印内容是 -- 的一行。

PATTERN:正则表达式字符:

基本的正则表达式字符:

globbing(简化版的正则表达式)

字符匹配:

.:匹配任意单个字符

所有的字符集都可以放到中括号中表示单个字符

[]:匹配指定位置的单个字符

[^]:匹配指定位置以外的单个字符

[:xdigit:]:所有的十六进制

a-z:所有的小写字母

A-Z:所有的大写字母

0-9:所有的十进制数字

次数匹配:表示该类字符之前的那个字符可以出现任意次

*:其前面的字符可以出现零壹或多次(使用较多)

\?:其前面的字符可有可无

\+:其前面的字符至少出现一次

\{m\}:其前面的字符必须出现m次

\{m,n\}:其前面的字符至少出现m次,至多出现n次

\{,n\}:其前面的字符至多出现n次

\{m,\}:其前面的字符至少出现m次

.*:任意长度的任意字符

位置锚定字符:

行锚定:

行首锚定:^

行尾锚定:$

字锚定:

字首锚定:\< 或 (\b老方法,一般不用了)

字尾锚定:\> 或 \b

注意:对于正则表达式引擎来说,字是由非特殊字符组成的连续字符串;

分组与引用字符:

\(PATTERN\):PATTERN当作整体字串来处理,不分开

例:\(yxz\):其中把yxz当作一个整体来进行搜素

在正则表达式引擎中,有一系列的内置变量,这些变量会保存至所有分组内的字符信息。用于后向引用,这些变量依次是:\1, \2, \3,

\1:第一组小括号中的PATTERN匹配到的字符

\2:第2组小括号中的PATTERN匹配到的字符

例:找uid与gid相同的用户

[[email protected] ~]# grep ‘\(\<[[:digit:]]\+\>\).*\1‘ /etc/passwd

用户名与bash相同

[[email protected] ~]# grep ‘\(\<[[:alpha:]]\+\>\).*\1$‘ /etc/passwd

或:\|(多选一)

注意:\|将其左右两边的字符串当作整体对待;

例子:                                                                                          [[email protected] ~]# grep -c ‘^[[:space:]]*$‘ 2

ifconfig | grep ‘\<1[0-9][0-9]\>‘

ifconfig | grep ‘\<255\>$‘

grep [options] [-e PATTERN | -f FILE] [FILE...]  [FILE...]   (例:/etc/* )

默认情况下,grep只有一个PATTERN,如果想要写多个PATTERN的话,要使用-e 选项

将所需要的PATTERN写入到一个文件中,保证每行只有一个PATTERN,此时我们可以使用-f file方式

egrep:默认仅支持扩展正则表达式

grep [options] PATTERN [FILE...]

扩展的正则表达式元字符与grep差不多

但其“或”符号为: |

fgrep:PATTERN所有的字符都被当作文本字符来处理

时间: 2024-10-17 17:24:03

grep与egrep命令及正则表达式的相关文章

grep、egrep命令用法

何谓正则表达式 正则表达式,又称正规表示法.常规表示法(Regular Expression,在代码中常简写为regex.regexp或RE),是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.许多程序设计语言都支持利用正则表达式进行字符串操作. 正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则

grep和egrep命令及相应的正则表达式用法总结

作为Linux上文本处理三剑客之一的文本搜索工具,grep和egrep是基于"pattern(模式)"对给定文本进行搜索操作. 正则表达式: 即 Regular Expression 缩写为REGEX. 是由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能. 正则表达式分类: 基本正则表达式:BRE (Basic Regular Expression) 扩展正则表达式:ERE (Extend Regular Expression) 正则表达式

编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法

bash的特性之多命令执行的逻辑关系: 1.命令替换(命令之间无明确的逻辑依赖关系) COMMAND1 $(COMMAND2) 2.管道(命令之间无明确的逻辑依赖关系) COMMAND1 | COMMAND2 | COMMAND3 前面的命令无论执行成功与失败后面命令继续执行:管道命令的前一个命令应该有标准和输出否则用":"隔开 例如:useradd sola :echo 456 | passwd --stdin sola 3.顺序执行结构 COMMAND1:COMMAND2:COMM

linux学习之grep egrep 命令及正则表达式

有幸在马哥面授班学习linux,马哥常告诉我们要做就做到最好,希望通过这些博文把自己的学习经历和内容好好的记录下来,也算是复习. grep: Global search REgular expression and Print out the line. 文本搜索工具,根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行. grep [OPTION]... 'PATTERN' FILE...  --color 正则表达式:由一类字符书写的模式,其中有些字符不

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 [选项] 匹配模式 [文

Linux grep、egrep 命令使用示例及详解

一.grep简介 (1). grep (global search regular expression (RE) and print out the line ),[全面搜索正则表达式并把行打印出来]是一种强大的文本搜索工具,他们使用正则表达式搜索文本,并且把匹配的行打印出来. (2).grep家族包括grep.egrep和fgrep,其中egrep和fgrep的命令只跟grep有很小的不同.egrep是grep的扩展,支持更多的(RE)元字符. (3)可用于shell脚本,因为grep通过返

grep与egrep命令

greo -E 等同于 egrep grep常用两种方式 1.   grep -c python a.txt 2.   cat a.txt | grep -c python a.txt文件如下 i love python i love python i love python i lovelove python i love pythond i love PYTHONi love java grep -c python a.txt grep -i python a.txt grep -E 'py

grep、egrep以及正则表达式的使用

正则表达式是linux学习里面很重要的一部分内容,也算是一个难点,元字符多,组合方法也各种各样,每个人学习理解方法不一样,其中遇到的问题也各不相同, 学习正则表达式首先要会的是grep以及egrep命令的使用. grep 是Globalsearch Regular expression an Print out the line的缩写,是一种文本搜索的工具,可以根据用户指定的"模式(pattern)"对目标文本进行搜索过滤,显示出被"模式"匹配到的行.这里要说的一点

正则表达式grep和egrep的基本使用

正则表达式grep和egrep的使用 正则表达式(REGular EXPression REGEXP)就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序.正则表达式中的模式(pattern)以正则表达式的元字符,以及正常字符组合而成. 正则表达式的字符串依照不同的严谨度而分为基础正则表达式与扩展正则表达式. 一.基础正则表达式(grep) Grep全称: Global search Regular