grep工具的使用与正则表达式

grep:(Global search REgular expression and Print out the line.)

grep是Linux的文本内容搜索工具,对于给定的文档,以行为单位,根据匹配条件对文本内容逐行匹配,匹配的条件小到单个字符大到整行,搜索时以指定的模式匹配字符串表达的内容为单位,这里提到的单位有字符串长度的意义,以这个字符串作为一个完整的单元从前至后匹配行中的内容,当在行中匹配到符合条件的内容后默认是将该行的予以显示,而不是匹配到的字符串,搜索时要求给定的搜索条件,即模式,也叫做正则表达式。

正则表达式:

正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能,正则表达式就是字符与字符间的验证描述关系的展现。

grep的使用格式:

grep[options] ‘pattern‘ FILE ;从FILE文件中查找符合指定模式pattern的行并显示出来

例如:在/etc/passwd文件中查找包含root字符串的行

# grep ‘root‘ /etc/passwd

root:x:0:0:root:/root:/bin/bash

正则表达式主要分为两类:

基本正则表达式(grep),扩展正则表达式(egrep)

正则表达式的元字符:

具有特殊意义的专用字符,有通配的效果,不表示其字面意义,用于额外的功能性描述

一,基本正则表达式的元字符:

1、字符匹配元字符:

.:匹配任意单个字符,例如:查找/etc/passwd中以r开头中间跟任意两个字符的行,grep “r..t” /etc/passwd。

字符匹配元字符还有:

[]:匹配指定范围内的任意单个字符,常见的指定范围字符集能表达的字符有:

[0-9],[[:digit:]]数字;

[a-z],[[:lower:]]小写;

[A-Z],[[:upper:]]大写;

[[:space:]]空格;

[[:punct:]]标点;

[[:alpha:]]字母;

[[:alnum:]]字母+数字;

[^]:取反

2、次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

*:任意长度,它前面的字符可以出现任意次,例如:grep “x*y” /tmp/test.txt。

注:示例中用的grep.txt文件中定义了若干行,内容是:Xxy,xyy,y,xy,y,ay,xxxxy,xyy每串字符是一行。

\?:0次或1次,它前面的字符是可有可无的,例如:grep “x\?y” /tmp/test.txt

\{m\}:m次,它前面的字符要出现m次,例如:grep “x\{2\}y” /tmp/test.txt

\{m,n\}:至少m次,至多n次,例如:grep “x\{2,5\}y” /tmp/test.txt

\{m,\}:至少m次,例如:grep “x\{3,\}y” /tmp/test.txt

\{0,n\}:至多n次,例如:grep “x\{0,2\}y” /tmp/test.txt

.*匹配任意长度的任意字符,例如,如查找/etc/passwd中以k开头后面跟任意字符的行

3、位置锚定元字符

^:行首锚定,例如查找/etc/passwd中以root为行首的行

$:行尾锚定,例如查找/etc/issue文件中以字母m结尾的行

^$:空白行,例如查找/etc/issue文件中的空白行

\<或\b:词首锚定,例如查找/etc/passwd中以root作为词首的行

\>或\b:词尾锚定,例如查找/etc/passwd中以root作为词尾的行

4、分组和引用元字符

\(\),例如:\(ab\)*

\#:引用元字符,引用第n个括号匹配到的内容

分组和引用元字符往往同时出现,例如:查找系统上其用户名和默认shell相同的用户

基本正则表达式中常用的选项:

--color=auto:自动选择颜色将内容高亮显示出来

-i:匹配时不区分大小写

-v:反向选取,只显示不符合模式的行;

-o:只显示被模式匹配到的字串,而不是整个行;

-A #:显示匹配到的行,同时显示其后面的#行

-B #:显示匹配到的行,同时显示其前面的#行

-C #:显示匹配到的行,同时显示其前后的#行

二,扩展正则表达式的元字符

扩展的正则表达式使用grep –E选项来表达使用扩展的正则表达式或者是使用egrep来表达,这两种表示法意义相同,使用扩展的正则表达式时用在原基本正则表达式元字符前的\转义字符就不再使用了,而当需要使用基本正则表达式中的元字符的原字符本意时,就需要用到扩展的正则表达式,而里面用到的特殊字符,如?、/、(、)等字符就需要转义,遇到这种情况是必须要用到扩展正则表达式来写模式匹配字符串的。

1、字符匹配元字符:这些元字符与基本正则表达式中的用法相同。

.:任意单个字符;

[]:字符集范围内的单个字符;

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

2、 次数匹配元字符:

*:匹配其前面字符任意次, 例如:grep  -E “x*y” /tmp/test.txt

?:匹配其前面字符0次或1次,例如:grep  -E “x?y” /tmp/test.txt

+:至少1次,例如查找/tmp/test.txt文件中x出现至少一次的行,grep -E "x+y" /tmp/test.txt

{m}:精确匹配m次,例如:grep -E “x{2}y” /tmp/test.txt

{m,n}:至少m次,至多n次,例如:grep -E “x{2,5}y” /tmp/test.txt

{m,}:匹配其前面的字符至少m次,例如:grep -E “x{3,}y” /tmp/test.txt

{0,n}:匹配其前面的字符至多n次,例如:grep -E  “x{0,2}y” /tmp/test.txt

3、位置锚定元字符:位置锚定元字符在pattern表达式中的写法与基本正则表达式的相同

^:行首锚定

$:行尾锚定

\<,\b:词首锚定

\>,\b:词尾锚定

^$,^[[:space:]]*$:空白行

4、分组和引用:

( ):分组

引用:\#

分组示例:查找/proc/meminfo文件中以S或s开头的行,grep –E “^(s|S)” /proc/meminfo    

引用示例:查找系统上其用户名和默认shell相同的用户

正则表达式写法的自我经验总结:

1、                 1、 首先要考虑表达式字符串所在行的位置,比如行首,行尾,或者词首和词尾或某些字符的前后等,很多时候要搜索的字符串位置会比较隐晦的表达出来,但是我们在实际的搜索过程中要其自身的位置特点,甚至是观察其周围字符的特点和位置将其表达出来,否则表达式的内容表达的内容就不完整或缺少内容或所要的字符串并不能符合要求。

2、      2、其次要考虑的是字串的字符内容,是什么类型的字符,要匹配的字符要能完整的表达所要匹配的完整字符串,其中的字母数字特殊字符都要完整表达出来。

3、                 3 、考虑字符出现的的次数,往往查找字符串都是匹配前面的字符,有很多时候匹配字符串的长度要求会隐讳的表达出来,如中间跟任意字符,或某类字符有多个等等,次数的匹配也是正则表达式字串完整意义重要的一环,也是表达式书写完整充分的关键。

grep工具的使用及正则表达式的说明至此结束。

grep工具的使用与正则表达式

时间: 2024-10-02 19:18:15

grep工具的使用与正则表达式的相关文章

浅析grep工具相关选项及正则表达式

grep是linux下一个重要的文本处理工具之一,全称是Globel Search Regular Expression and Printing out the line(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep家族包括grep.egrep和fgrep. egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep.fgrep是fast gr

正则表达式-grep工具常见选项的使用

正则表达式:就是规定一些语法表示字符类.数量限定符.和位置限定符关系,再和普通字符共同来表示一个模式,用某种模式来匹配一类字符串,许多程序设计语言都支持正则表达式匹配 一个正则表达式的三个要素和一些特殊字符 先了解一下grep工具: grep:文本过滤工具.它能使用正则表达式搜索文本,并把匹配的行打印出来.正则表达式在grep中用来查找符合模式的字符串,grep找的是包含某个模式的行. egrep相当于grep -E,表示采用Extended正则表达式语法. grep的正则表达式有Basic和E

Linux:正则表达式及:grep工具

什么是正则表达式: 正则表达式就是处理字符串的方法,他是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找,删除,替换某种特定字符串的处理程序,其实就像相当与添加位置限定符,数量限定符,字符想定符来进行范围缩减匹配. 2.grep工具: 首先grep就是一个查找工具,然后通过正则表达式完成字符串的搜索. 存在3种限定符: 首先是字符限定符: 数量限定符: 位置限定符: 其他限定符: 是grep正则表达式的Extended规范,Basic规范也有这些语法,只

shell脚本--grep工具

grep工具 shell命令行之所以便捷和它所支持的工具是离不开的,其中grep工具就是一个搜索神器,它可以搜索整个linux系统所有文件中的所有信息. grep的灵活使用离不开正则表达式 正则表达式是一种查找以及字符串替换操作,它只是一个字符串,没有长度的限制,但是一般却表较短.可以被认为是一种轻量级.简介.使用与特定领域的编程语言. 这里主要使用grep工具 grep工具一般用来做两件事,搜索文件和搜索指定字符串 grep常用命令 -a 不要忽略二进制数据. -b 在显示符合范本样式的那一行

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不使用

grep与egrep命令及正则表达式

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

linux基本命令grep egrep fgrep用法以及正则表达式

1.1.基本定义:  www.2cto.com grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来. grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是主意,grep在数据中查找一个字符串时,是以"整行"为单位进行数据筛选的. egrep命令等同于grep

grep系的介绍及正则表达式详解

文本处理工具: 全屏编辑器:vim,nano 行编辑器: 文本处理三剑客:grep系列,sed,awk grep系列:grep,egrep,fgrep:统称为文件搜索工具:基于PATTERN(模式)对于给定的文本文件进行模糊搜索,grep系列所有命令默认个左右贪婪工作模式: sed:stream editor ,流编辑器,文本编辑工具: awk:贝尔实验室产品:文本格式化工具,文件报告生成器,文件处理的编程语言 grep系: grep:global search regular expressi

正则、grep工具

正则表达式是用于字符串的模式分割.匹配.查找及替换等操作.模糊匹配 Linux正则表达式一般以行为单位处理的. 通配符例子:ls *.log这里的*就是通配符(表示所有),不是正则表达式 三剑客以外的*是通配符 grep [-cinvABC] 'word' filename -c 行数 [[email protected] ~]# grep "root" passwd  //grep自带颜色 root:x:0:0:root:/root:/bin/bash operator:x:11:0