详解正则表达式以及文本处理工具—grep、egrep的用法和特性

一、grep

(1)grep简介

grep:全称是Global search REgular expression and Print out the line,全局搜索正则表达式并输出合适的行。

grep是一种强大的文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。(只对文本进行搜索处理)

Unix的grep家族包含grep、egrep和fgrep。

(2)grep的用法

语法格式:grep [option]... ‘PATTERN‘ FILE...

选项       文本模式     文件

命令选项:

--color=auto :自动标记颜色(对匹配到的字符串标记颜色,默认是红色)

-v: 反向选取(只显示没有被匹配到的行)

-o: 仅显示匹配的字串,而非字串所在的行

-i: (ignore-case)忽略字符大小写

-A # :显示匹配到的行和该行的后#行 (#表示数字)

-B # :显示匹配到的行和该行的前#行

-C # :显示匹配到的行、该行的前#行和该行的后#行

-E: 支持使用扩展正则表达式(相当于使用egrep命令)

grep不是拿整行匹配的,是按字串匹配的。(当在一行中第一次匹配到指定的字符串时,它不会直接跳到下一行再去匹配,而是在本行继续往后匹配。)

grep工作于贪婪模式:尽可能多的去匹配

要想使用grep的高级用法,须结合正则表达式和管道一起使用。因此,接下来让我们拨开迷雾,走进正则表达式的花园。

二、正则表达式简介

正则表达式:

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

其实正则表达式就是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;

元字符:

正则表达式中具有特殊意义的专用字符(类似于C语言中的关键字);

不表示其字面意义,而用于额外功能性描述

分类:

正则表达式分为两类: “基本正则表达式”和“扩展正则表达式”

grep内置“基本正则表达式”的功能,也可以使用grep -E 利用“扩展正则表达式”的功能。

egrep内置“扩展正则表达式”的功能。

fgrep: 不支持使用正则表达式

三、基本正则表达式

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

(1)字符匹配:

.: 匹配任意单个字符

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

[0-9], [[:digit:]]  (单个0-9的数字)

[a-z], [[:lower:]]  (单个小写字母)

[A-Z], [[:upper:]]  (单个大写字母)

[[:space:]]  (空格)

[[:punct:]]  (单个标点符号)

[[:alpha:]]  (单个字母,包括大小写)

[[:alnum:]] (单个数字或字母)

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

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

*: 任意长度,它前面的字符可以出现任意次

\?: 0次或1次,它前面的字符是可有可无的

\{m\}: m次,它前面的字符要出现m次

\{m,n\}: 至少m次,至多n次(m<n)

\{m,\}:至少m次

\{0,n\}: 至多n次

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

(3)位置锚定:

^: 行首锚定;写在模式最左侧

$: 行尾锚定:写在模式最右侧

^$: 空白行

(查找有空白行的,有才会显示)

\<: 锚定词首,出现于单词左侧,也可用\b

\>: 锚定词尾,出现于单词右侧, 也可用\b

(不包含特殊字符的连续字符组成的串叫单词)

(4)分组:

\(\) :分组的格式

分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用。

引用有编号:自左而后的左括号,以及与其匹配右括号(不管内嵌多少个括号,都是从左到右编号的。)

例如,\(a\(b\(c\)\)mn\(x\)\).*\1  (\1引用的是第一个左括号以及与其匹配右括号间匹配的内容)

\#: 引用第n个括号所匹配到的内容,而非模式本身(#表示数字)(如,\(ab\(x\).*\2 : \2引用的是\(x\)的匹配内容)

例如:

\(ab\?c\).*\1

abcmnaaa        abcmnabc(匹配成功)  abcmnac        acxyac(匹配成功)

四、扩展正则表达式

egrep内置“扩展正则表达式”的功能,也可使用grep -E 利用“扩展正则表达式”的功能。

grep -E  ‘PATTERN‘ FILE...

egrep ‘PATTERN‘ FILE...

(1)字符匹配:

. :匹配单个任意字符

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

[^] :匹配指定范围外的任意单个字符

(2)次数匹配:

*:任意次

?: 0次或1次(可有可无)

+: 至少1次;(相当于基本正则表达式的\{1,\})

{m}: 精确匹配m次

{m,n}: 至少m次,至多n次(m<n)

{m,} : 至少m次

{0,n} :至多n次

(3)位置锚定:

^ :行首锚定

$ :行尾锚定

\<, \b :词首锚定

\>, \b :词尾锚定

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

(4)分组:

() :

同样可使用引用:\1, \2, \3

| :或者(扩展正则表达式特有的)

例如:a|b表示a或者b

conC|cat :表示conC或cat

con(C|c)cat :表示conCat 或 concat

详解正则表达式以及文本处理工具—grep、egrep的用法和特性

时间: 2024-10-14 05:05:29

详解正则表达式以及文本处理工具—grep、egrep的用法和特性的相关文章

正则表达式和文本搜索工具grep

正则表达式是由字面文本和具有特殊意义的符号组成的.我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本.它是一种匹配文本的通用语言.正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤.剥离.替换.搜索等. 正则表达式的基本组成部分 ^ #行起始标记(使用cat -a显示空格,行首,行尾等标记.) #示例 ^It 匹配以It起始的行 $ #行尾标记 #示例 It$ 匹配以It结尾的行 . #匹配任意一个字符 #示例:Hack.匹配Hackl和H

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

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

文本处理工具:grep egrep fgrep

一.grep:global search regular expression and print out the line. 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行 格式:grep [option] 'PATTERN' file1,...其中PATTERN为正则表达式. --color=auto:匹配的行高亮显示 -v:反向匹配,显示不能被模式所匹配的行 -o:仅显示被匹配的内容,而非整行 -i(ignore-case):不区分字符大小写 -A

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

基本正则表达式和文本处理工具之grep、egrep和fgrep

Grep(global search regular expression and print out the line全局搜索正则表达式并把行打印出来),是一种强大的文本搜索工具,egrep和fgrep的命令跟grep只有很少的差别,linux使用的是GNU版本的grep,功能非常强大,可以通过-G,-E,-F命令选项来使用egrep和fgrep的功能,grep的工作方式为在一个或多个文件中搜索字符串模板,如果模板包括空格则必须被引用,模板后的所有字符串被看做文件名,搜索的结果被送到屏幕,不影

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

15.自学Linux之路:文本处理工具grep,eprep和fgrep

文本处理工具grep,eprep和fgrep: grep:(global search regular expression and print out the line),全面搜索正则表达式,并显示相应的行 文本搜索工具:根据用户指定的文本模式对目标文件逐行搜索,显示能够被模式匹配的行 格式:grep  [options]  'PATTERN'  file,.....    文本过滤器 --color=auto:将匹配到的模式加上颜色 例:#grep  --color=auto  Boot  

Linux文本处理工具——Grep

Grep简介 全名:Global search Regular expression and Print out the line. 功能:文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. Linux的三大文本处理工具之一,可以说学好grep命令无疑是重要的,可以说学好grep也是不容易的,因为grep里面要用到最烦人的正则表达式. grep语法格式 grep [option]... 'PATTERN' FILE... [option]:表示可以跟选项,

Linux学习汇总——Linux用户组管理,文件权限管理,文本处理工具grep及egrep

本章Blog相关Linux相关知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户库:/etc/passwd ,密码库 :/etc/shadow,组库:/etc/group,组密码库:/etc/gshadow 加密方法:对称加密--加密和解密使用同一个密码,如DES,AES :公钥加密--每个密码都成对出现,一个公钥,一个私钥,如DSA,RSA:单向加密--常用于数据完整性校