grep, egrep, 基本正则表达式及扩展表达式;

什么是正则表达式?

正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

正则表达式对Linux系统管理员工作有什么帮助?

通常情况下,由于系统在繁忙的情况下,每天产生的信息会多到你无法想象的地步,系统管理员需要每天去看很多的数据信息,从千百行的数据中找个出一行有问题的信息,难度太大!

这时,我们就可以通过正则表达式的功能,仅仅取出有问题的信息进行分析。如此,系统管理工作将会更加容易;

grep、egrep的常用的参数选选项:


选项


功能


备注


-v


反向选取


-o


仅显示匹配到的内容


-i


匹配时忽略字符大小写


-E


使用扩展正则表达式


-A #


显示匹配到的行后#行


-B #


示匹配到的行前#行


-C #


显示匹配到的行前后#行


--color


表示匹配的字符用颜色标记出来

grep基本正则表达式匹配方式可以细分为几大类:字符匹配、匹配次数、限定、位置锚定、分组符;


选项


功能


备注


字符匹配


.


匹配任意单个字符


包括字母、数字、特殊字符


[]


匹配指定集合中的任意单个字符


如:[q] 表示匹配字符q


[^]


匹配指定集合外的任意单个字符


如:[^q] 表示匹配字符q以外的字符


匹配次数(用于对其前面的紧邻的字符所能够出现的次数做出限定)


*


匹配其前面任意次,0,1或多次;


\?


匹配其前面的字符0次或一次;


\{m\}


匹配其前面的字符m次;


\{m,n\}


匹配其前面的字符至少m次,至多n次;


另:\{1,\}表示1到无穷大都匹配


.*


用于匹配任意长度的任意字符;


此处的.*相当于windows中搜索时用到的*


位置锚定:


^


行首锚定(^R 表示R必须出现在行首);


必须写在最左侧;


$


行尾锚定;


写在模式的最右侧;


^$


空白行(行首锚定和行尾锚定组合);


表示行首和行尾都没有任何字符;


\<


词首锚定,出现在要查找的单词模式的左侧;


\<q  表示以Q开头的单词;


\>


词尾锚定,出现在要查找的单词模式的右侧;


\>q  表示以Q结尾的单词;


\<pattern\>


匹配单词;


\<root\>  表示查找文件中含有root的行;


分组符:


\(\)


给某特定的值进行分组(不限于单词)


\<root\>  表示查找文件中含有root的行;

实际运用举例:

例:如我们需要寻找在/etc/passwd文件下含有以r开头的行可以用如下命令;

# grep  –color  ‘^[r]‘  /etc/passwd

由输出结果我们可以看出,grep命令会自动筛选出我们需要的条件行显示出来,隐藏我们不需要的信息;

初学者经常对命令不熟悉经常会闹笑话,比如我们同样寻找/etc/passwd文件下以root开头的行,很多初学者会写成这样: # grep  –color  ‘^[root]‘  /etc/passwd  看似没错.但是显示除的结果却不是我们需要的,下图是这条命令的输出结果:

我们能看到系统显示出了分别以‘r’‘o’‘t’为行首的行;

正确的书写格式如下;

# grep  –color  ‘^\(root\)‘  /etc/passwd

上图显示出的是我们需求的以‘root’开头的行。

我们也可以加上参数使其至显示我们匹配到的内容;

我在前的命令后面跟了一个‘-o’的参数,表示仅显示匹配到的内容。同时我们也可以‘-v’进行反向选取,就表示显示除‘root’开头的所有行:

egrep及扩展的正则表达

       egrep大部分表达方式与grep一致,仅有部分匹配格式对grep进行了简化,这里仅列出不同的选项;

      


选项


功能


备注


匹配次数



匹配其前面的字符0次或一次


在grep中需要写成:\?


+


匹配其前面的字符至少一次


{m}


匹配其前面的字符m次


在grep中需要写成:\{m\}


{n,m}


匹配其前面的字符至少n次,至多m次;


在grep中需要写成:\{n,m\}


分组


(xxx


对‘xxx’进行分组


在grep中需要写成:\(xxx\)


或者


|


可以进行模糊查找如找a或b或c


 ‘(a|b|c)’

 

例;

       我们分别使用egrep和grep进行查找/etc/passwd 文件下的出现root的行(要求至少匹配一次),并进行对比;

       #grep  --color  ‘\(root\)\{1,\}’   /etc/passwd

       #egrep   --color  ‘(root)+’  /etc/passwd

由上面的两段命令可以看出要显示同样的结果往往egrep比grep的书写方式更简单;

很多时候由于对命令不熟悉,我们经常回记错格式,会把扩展的正则表达式用在grep中,我们这里可以尝试一下看会出现什么情况:
       

这里没有显示任何内容,然后我们使用echo $?查看到反馈为’1’这说明我们的命令没有执行成; 那有没有办法直接用grep来使用扩展正则表达式呢?当然有,我们只需要在命令后面加上-E就可以了;我们来尝试一下;

这里有结果反馈,已经执行成功了!

正则表达式,你明白了吗?

时间: 2024-10-05 05:07:39

grep, egrep, 基本正则表达式及扩展表达式;的相关文章

grep, egrep, 基本正则表达式及扩展表达式学习及用法

讲grep与egrep之前,我们先要知道grep与egrep是两种文本搜索工具.而文本搜索类工具就是根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行. 正则表达式其定义:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能:(Global search REgular expression and Print out the line.) 正则表达式分类: 基本正则表达式(grep) 扩展正则表达式(egrep) 正则表达式的

grep的基本正则表达式及扩展表达式

grep 全名为 全面搜索正则表达式并把行打印出来(global search regular expression) grep搜索以 FILE 命名的文件输入 (或者是标准输入,如果没有指定文件名,或者给出的文件名是 - 的话),寻找含有与给定的模式 PATTERN(正则表达式) 相匹配的内容的行.默认情况下, grep 将把含有匹配内容的行打印出来. 另外,也可以使用两个变种程序 egrep 和 fgrep . Egrep 与 grep -E 相同. Fgrep 与 grep -F 相同 g

Linux正则表达式及扩展表达式、egrep命令的说明(8月27日作业练习)

1.总结本此课程中所涉及命令的使用方法及相关示例展示: 权限管理:           权限管理: chmod            所属关系管理: chown, chgrp            文件遮罩码:umask 修改文件权限:chmod          chmod [OPTION]... MODE[,MODE]... FILE...           chmod [OPTION]... OCTAL-MODE FILE...           chmod [OPTION]... -

linux正则表达式和扩展表达式

Centos的grep的正则表达式和扩展表达式 日期2015.08.28 备注:其简述来自于马哥课堂笔记  grep      grep是一个文本过滤工具根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行:     模式:由正则表达式的元字符及文本字符所编写的过滤条件: 其中,元字符:字符不表示其字面意义,而用于表示通配或控制功能 grep分为两类 基本的正则表达式:BRE 扩展的正则表达式:ERE grep 使用格式 grep  [选项]   模式  [文件]

Linux 命令grep, egrep,正则表达式大全

Linux grep 命令     Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版

grep , egrep 以及正则表达式

一.什么是正则表示法? 正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能: 正则表达式分为两类:基本正则表达式和扩展正则表达式: ------------------------------------------------------ 注:本文以grep为例来讲解正则表达式. (1)基本正则表达式: 字符匹配: 字符: 字符说明: . 匹配任意单个字符 [] 匹配任意单个字符 [[:digit:]], [0-9] 所有数字 [[:lower:]],

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

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

grep,egrep 及正则表达式

Linux中一切皆文件:文本文件,对文本文件的搜索就非常的关键和常用. Linux文本搜索工具:grep ,egrep,fgrep,文本搜索指文本文件中内容的搜索. 文件名的搜索是linux中bash的特性,globbing,文件名通配,有点windows中的搜索相似,但功能跟强大.一般配合 ls 命令使用.可参考视频:bash基础特性(01) globbing:中的元字符: *:用来通配任意长度任意字符,?:用来匹配单个字符,[]:用于比配指定范围内的字符,[^]:用于取反范围内的字符. 总结

grep/egrep和正则表达式汇总

grep, egrep, fgrep 语法格式: grep [option] ... 'PATTERN' FILE --color=auto 对目标FILE进行搜索,显示能够匹配的行 正则表达式 基本正则: grep 扩展正则: grep -E 或者 egrep fgrep: fast但是不支持正则表达 基本正则表达式的元字符: 字符匹配: .  匹配任意单个字符 [] 匹配指定范围内的单个字符 [0-9], [[:digit:]] 单个数字 [a-z], [[:lower:]] 单个小写字符