Linux中的grep、egrep及相应的正则表达式和用法

在Linux系统当中,处理文本有三个常用的工具,俗称文本处理三剑客,grep就是其中之一。

grep是一种强大的文本搜索工具,它的全称是:Globally search a Regular Expression and Print。工作原理是基于正则表达式引擎按给定的“pattern”对文本进行搜索过滤操作,并把匹配的行打印出来。因此了解要grep的用法我们可以从两方面着手,1:grep命令的用法,2:正则表达式。

1,grep命令的使用方法

首先我们可以使用man命令查看一下grep的使用帮助。

第一种使用格式为:grep [OPTIONS] PATTERN [FILE...]

使用示例:

可以看出它的作用是:根据“root(过滤条件)”对目标文本逐行进行匹配检查;打印出符合条件的行。

常用选项 --color=auto :对匹配到的文本着色后高亮显示;

使用示例:

因为在centOS7中,shell的环境变量配置文件中已经定义了别名grep=“grep --color=auto”(可以通过type命令查看),所以演示时我们先执行撤销别名操作。

看以看出这种方式显示结果更为直观,因此下面的示例中我们使用的grep命令都是已经定义了grep=grep --color=auto的别名。

常用选项 -i:忽略字符大小写;

使用示例:

常用选项 -o:仅显示匹配 到的文本自身;

使用示例:

常用选项 -v, --invert-match:反向匹配;

使用示例:

常用选项 -q, --quiet, --silient:静默模式,不输出任何信息;

使用示例:

常用选项 -A NUM, --after-context=NUM:同时显示匹配到的文本行和它的后NUM行

使用示例:

常用选项 -B NUM, --before-context=NUM:同时显示匹配到的文本行和它的前NUM行

使用示例:

注:被匹配到的一行没有同时显示它的前两行是因为它本身已经是文本的第一行。

常用选项 -C NUM, -NUM, --context=NUM:同时显示匹配到的文本行和它的前后NUM行

使用示例:

第二种使用格式 grep  [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

这个使用使用格式又有两种方式

第一种使用-e选项: -e PATTERN, --regexp=PATTERN:多模式机制;

使用示例:

第二种使用-f选项: f FILE, --file=FILE:FILE为每行包含了一个“pattern”的文本文件,即grep script;

使用示例:

第二部分:使用用正则表达式

正则表达式:Regular Expression, REGEX

由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能;

正则表达式可分为两类:

1,基本正则表达式:BRE(Basic Regular Expression)

1)元字符:

.:表示匹配任意单个字符

使用示例:

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

[^];匹配范围外的任意单个字符(取反)

使用示例:

常用范围表示区间:

[[:digit:]]:表示所有数字[0-9]

[[:lower:]]:表示所有小写字母,等同于[a-z]

[[:upper:]]:表示所有大写字母,等同于[A-Z]

[[:alpha:]]:表示所有字母,等同于[a-zA-Z]

[[:alnum:]]:表示所有字母和数字,等同于[a-zA-Z0-9]

[[:graph:]]:表示所有非空字符(不包含空格和控制字符)

[[:cntrl:]]:表示所有控制字符

[[:punct:]]:表示所有标点符号

[[:print:]]:表示所有非空字符(包含空格)

[[:space:]]:表示空白字符

详情可使用man 7 glob查看。

使用示例:

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

*:匹配前面的字符任意次(0,1或多次),那么 .* 可以表示为任意字符出现任意次,即任意长度的任意字符。

\+:匹配前面的字符至少一次

\?:匹配前面的0次或1次,即前面的字符可有可无

\{m\}:匹配前面的字符m次,m为非负整数

\{m,n\}:匹配其前面的字符至少m次,最多n次

\{0,n\}:最多匹配其前面的字符n次

\{m,\}:最少匹配其前面的字符m次

使用示例

3)位置锚定:限制模式所匹配到的文本只能出现于目标文本的具体位置;

^:行首锚定;用于模式的最左侧,^PATTERN

$:行尾锚定;用于模式的最右侧,PATTERN$

^PATTERN$:要让PATTERN完全匹配一整行;

^$:空行;

^[[:space:]]*$:空行或者只有空白字符的行

使用示例

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

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

\<PATTERN\>:单词锚定;

单词:由非特殊字符组成的连续字符(字符串)都称为单词;

使用示例:

4)分组与引用:

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

注意:分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量是\1, \2, \3, ...

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

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

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

\2:第二组括号中的pattern匹配到的字符串;

……

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

使用示例

常用选项:

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

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

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

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

2,扩展正则表达式:ERE(Extend Regular Express)

与基本正则表达式相同之处:

元字符: . ; * ;[ ];[^]

位置锚定:

^:行首锚定;

$:行尾锚定;

与基本正则表达式不同之处:

匹配次数:

+:匹配前面的字符至少一次,等同于基本正则表达式中 \+

?:匹配前面的0次或1次,等同于基本正则表达式中 \?

{m}:匹配前面的字符m次,等同于基本正则表达式中 \{m\}

{m,n}:匹配其前面的字符至少m次,等同于基本正则表达式中\{m,n\}

{0,n}:最多匹配其前面的字符n次,等同于基本正则表达式中 \{0,n\}

{m,}:最少匹配其前面的字符m次,等同于基本正则表达式中 \{m,\}

分组及引用:

(pattern):等同于基本正则表达式中 \(pattern\),引用方式和基本正则表达式相同,都为后向引用:\1, \2, ...

相比与基本正则表达式增加的功能

| :或者

a|b:表示a或者b

C|cat:表示C或cat

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

使用示例

egrep:支持使用扩展正则表达式的grep命令,相当于grep -E;

fgrep:支持使用扩展正则表达式的grep命令,相当于grep -F;

时间: 2024-12-26 16:57:19

Linux中的grep、egrep及相应的正则表达式和用法的相关文章

linux下grep、egrep及相应的正则表达式和用法

     linux下grep.egrep及相应的正则表达式和用法                       一.简介      Linux上文本处理三剑客(引用自马哥教育 ):  grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作:     sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:     awk:GNU awk,文本格式化工具:文本报告生成器:         grep (缩写来自Globally se

linux常用命令-grep,egrep,regexp

grep: 根据模式搜索文本,并将符合模式的文本行显示出来.Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 grep [options] PATTERN [FILE...] -i(忽略大小写) [[email protected] ~]# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[[email protected] ~]# --c

grep, egrep及相应的正则表达式用法详解

grep, egrep及相应的正则表达式用法详解 一.grep/egrep Global search REgular expression and Print out的简写,是一种强大的文本搜索工具,它根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. linux使用GNU版本的grep.它功能更强,可以通过-E.-F命令行选项来使用egrep和fgrep的功能(fgrep不使用

linux下的grep,egrep及正则表达式

一, linux上常用的文本搜索工具,grep家族和正则表达式及介绍   linux上常用的文本搜索工具: grep(egrep,fgrep):文本搜索工具:基于"pattern"对给定文本进行搜索操作: sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具: awk:GNU awk,文本格式化工具:文本报告生成器: 正则表达式:由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能: 一般分为两类: 基本正则表达式:BRE 扩

liunx中grep,egrep及相应的正则表达式和用法

正则表达式是linux中重要的一部分,学习正则表达式先要学好grep和egrep的命令使用. 1. grep: grep命令的基本语法格式 grep [OPTION]... 'PATTERN' FILE... grep的常用选项: -v : 对匹配的行进行取反 -o : 仅显示匹配到的内容 -i : 忽略字符大小写 -n : 为匹配的行加上行号 -E : 使用扩展正则表达式 ,等同于egrep命令 -F : 不使用正则表达式搜索,等同于fgrep命令 -A # : 连同匹配行的下#行一并显示,#

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

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

深入理解Linux中的grep命令

介绍 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep [-acinv] [--color=auto] '查找字符串' filename 参数: -a :将binary文件以text文件的方式查找数据 -c :计算找到‘查找字符串'的次数 -i :忽略大小写的区别,即把大小写视为相同 -n :顺便输出行号

llinux文本三剑客之grep、egrep及相应的正则表达式和用法

Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客

grep、egrep及相应的正则表达式和用法

一.grep及基本正则表达式 1.grep基本用法        grep  [OPTIONS]  PATTERN  [FILE...]     常用选项: --color=auto:对匹配到的文本着色后高亮显示: -i:忽略字符大小写: -o:仅显示匹配 到的文本自身: -v, --invert-match:反向匹配: -E:支持扩展的正则表达式: -q, --quiet,静默模式,不输出任何信息:   1)首先建立一个test.txt的文本文件   2)然后使用grep和各选项进行匹配搜索: