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

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

正则表达式:如果想搜索/etc/passwd文件中以root开头的行,对与人来说很容易理解,但是对与计算机来说就无法理解,这个时候就需要使用正则表达式来表达过滤条件了,让用户实现对文本的智能搜索。正则表达式就是由元字符及正常字符所书写的模式,其中的元字符不表示字符本身的意义,而是用于表达控制或通配等功能。

正则表达式的特点是:

1. 灵活性、逻辑性和功能性非常的强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

grep:支持正则表达式,是一个文本搜索工具,根据用户指定的文本模式(正则表达式元字符以及正常字符组合而成),对目标文件进行逐行搜索,显示能匹配到的行。

egrep:支持扩展正则表达式,扩展正则表达式使用的元字符比基本正则表达式支持的元字符多一些,功能也要更强一些

fgrep:不支持正则表达式,但是搜索速度更快。

系统环境说明

[[email protected] ~]# cat /etc/redhat-release

CentOS release 6.6 (Final)

[[email protected] ~]# uname -rm

2.6.32-504.el6.x86_64 x86_64

grep过滤命令参数说明和演示

grep语法:[OPTIONS] PATTERN [FILE...]

设置grep搜索显示颜色:

[[email protected] ~]# alias grep="grep--color"

注意:这种方法只是临时有效,重启后会丢失,把别名设置到开机启动文件中,重启系统之后依旧有效。

grep参数:

-v:表示取反

-i:不区分字符的大小写

-E:支持扩展正则表达式

-A:-A 2 显示指定行和指定行的后两行 中间使用两个横线分割

-B:显示匹配到前面的指定行数

-C:表示匹配到的内容的上下的指定行数

-o:只输出匹配内容

-n:在行首显示行号

演示说明:

-i 参数演示说明:在/etc/passwd中搜索ROOT, 不区分大小写,第一次搜索的是ROOT但是没有搜索到,添加-i参数之后就匹配到了root,说明搜索不区分大小写了。

-C 参数演示说明:搜索/etc/passwd中redhat参数和匹配内容的上下各一行。

-o 参数演示说明:搜索/etc/passwd中root参数,非root内容不予显示。

-n 参数演示说明:输出匹配结果的行号。注意:这个行号不是按照匹配到的内容显示行号的,而是按照匹配行在文本中的所在行显示。

正则表达使命令

字符匹配:

.:匹配任意单个字符

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

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

[abc]  匹配字符集合内任意一个字符[a-z]

[:space:]:空白字符

[:punct:]:标点符号

[:lower:]:小写字母

[:upper:]: 大写字母

[:alpha:]: 大小写字母

[:digit:]: 数字

[:alnum:]: 数字和大小写字母

实例:

".":实例演示说明:显示/etc/passwd文件中,r开头t结尾,中间跟两个任意字符。

[]:实例演示说明:显示/etc/passwd文件中包含FTP字符的行。

显示/etc/passwd文件中包含数字的行。

次数匹配:在期望匹配字符后面提供一个控制符,用于匹配

* :重复0个或多个前面的一个字符,匹配其前面字符任意次

.*:匹配所有字符。^.*任意多个字符开头

工作与贪婪模式,尽可能长的匹配。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。

\?:0次或1次;表示其左侧字符可有可无

\+:1次或多次

\{m\}: m次;表示其左侧字符精确出现m次

\{m,n\}:至少m次,至多n次;

演示:

*:演示说明:显示/etc/passwd文件中r开头t结尾,中间要么出现包含o的内容,要么什么都不出现。

.*:演示说明:显示/etc/passwd文件中r0开头t结尾,中间出现任意长度的任意字符。

\?:演示说明显示/etc/passwd文件中包含ro开头t结尾,中间的o要是要么不出现,要么出现一次的行。

\+:演示说明:显示/etc/passwd文件中包含ro开头t结尾,中间的o出现过1次或多次的行。

\{m\}:演示说明:显示/etc/passwd文件中包含ro开头t结尾,中间的o出现两次的行。

位置锚定:

^:行首

$:行尾

^$:匹配空白行

实例:

^:演示说明:显示/etc/passwd文件中以root开头的行

$:演示说明:显示/etc/passwd文件中以/bin/bash结尾的行

单词锚定:由非字符组成的连续的字符串

\<:锚定词首

\b:锚定词首

\>:锚定词尾,也可以用\b

\<PATTERN\>:匹配PATTERN能匹配到的单词

示例:

\<和\b:演示说明:显示/etc/passwd文件中以sh开头的单词

\>和\b: 演示说明:显示/etc/passwd文件中以sh结尾的单词

分组:\(\)

重复单个字符直接在字符后面加上限定符号即可,但是如果想重复多个字符就不是限定符号可以搞定的,这个时候就需要用到分组。

分组的模式:在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存于内置的变量中,这些变量是\1,\2,……),因此,还可以被引用

实例说明:

把括号中的root当成一类字符,在加上*表示,roo要么显示一次,要么就不显示。

显示:r..t匹配到的字符在结尾在出现一次,也就是匹配以r..t开头,以r..t结尾的文件

综合使用方法:

找出/etc/passwd文件中的一位数或两位数;

# grep "\<[0-9]\{1,2\}\>" /etc/passwd

显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

# grep "^[[:space:]]\+" /boot/grub/grub.conf

显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit

扩展正则表达式

可以使用grep e或者egrep来使用

字符匹配:

表示方法和grep一样,不在提供实例

.:匹配任意单个字符

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

次数匹配:

说明:扩展正则表达式的次数匹配前面不需要加转移字符。

*:任意次

?:0或1次

+:至少一次

{m}:精确匹配m次

{m,n}:至少m次,至多n次

{m,}:至少m次

{0,n}:至多次

?和+:演示说明:和正则表达式的区别就在于没有加"\"

{}演示:同样也是没有加"\",使用起来方便了很多

位置锚定:

^:锚定行首

$:锚定行尾

\<,\b:锚定词首

\>,\b:锚定词尾

分组:

():不需要使用\转义

引用:

\1,\2,\3

显示/etc/passwd文件中root开头root结尾的行

或者:

这个是基本正则表达式所不具备的功能,意思是使用两个条件一起搜索,两个条件可以同时满足,也可以只满足其中一个,但是不能一个都无法满足。

a|b:a或者b

演示说明:显示/etc/passwd文件中的redhat和centos用户的信息。

显示/etc/passwd文件中redhat和fedora的信息,但是由于没有fedora的信息所以只显示了redhat用户的信息。

时间: 2024-08-22 16:17:19

正则表达式和grep文本搜索工具的相关文章

Linux命令学习:grep文本搜索工具

Mark: 本系列博文只是记录作者在Linux学习过程中的点点滴滴,新手可能参考,高手们就略过吧!!! Linux学习总结:grep文本搜索工具 功能:根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,并把匹配的行打印出来,它的全称为"Global Regular Expression Print",全局正则表达式,它默认是开放给所有用户. 语法格式:Grep [option] pattern file Option:命令选项,具体包含: -v: --revert-match

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

一.文本搜索工具grep (一)grep简介 Linux上常用的三个文本处理工具被人们称为Linux文本处理三剑客,他们分别是: 1.grep(egrep,fgrep):文本搜索工具,基于"pattern"对给定的文本进行搜索操作. 2.sed:stream editor,流编辑器,行编辑工具,文本编辑工具. 3.awk:GNU awk,文本格式化工具,文本报告生成器. 他们都是很优秀的文本处理工具.现在,我就重点介绍下grep. grep:global search regular

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

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

grep文本查看工具及正则表达式

grep文本查看工具及正则表达式 grep:搜索及过滤文本工具: (根据用户所指定的"模式"搜索,过滤条件"对目标文件进行过滤性匹配):grep自带正则表达式引擎工具. 所谓模式:由正则表达式所得元字符及普通文本字符所编写出来的过滤条件"模式" grep:三种支持模式: grep:基本正则表达式 egrep:支持扩展正则表达式 fgrep :不支持正则表达式 三种支持模式因其可以(grep -E:切换扩展,egrep-G:切换基本,分别有以-F切换fgre

Linux 基础之文本搜索工具grep

一.grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep grep: 默认支持基本正则表达式: egrep: 扩展正则表达式: fgrep: 不支持正则表达式元字符,搜索字符串的速度快 二.通过man手册获取grep帮助信息: #man grep GREP(1)                     

文本搜索工具grep,egrep,fgrep的区别

一.grep 1.用途:文本搜索工具,根据用户指定的文本模式(patten)对目标文件进行逐行搜索,显示能够被模式匹配的行内容. 2.命令使用格式: grep [option] ' PATTEN 'files- 2.1 常用选项详解 2.1.1 单文件查找: -n:显示匹配行的行号(为了显示清楚匹配行,下面的都用n+其他选项) -v :反向匹配(即显示非匹配行) –> 常用于过滤掉一些无关的信息,增加显示信息的可读性. ※第一个[5]就是指第5行被匹配. -o:只显示行中被模式所匹配的字符串,而

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

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

Linux命令之文本搜索工具grep、egrep、fgrep

grep即global search regular expression_r(RE) and print out the line,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep家族包括grep.egrep和fgrep:egrep是grep的扩展:fgrep查找一个或多个与给出的字符串或词组相匹配文件中的行,不支持规则表达式 语法:grep [OPTIONS] PATTERN [FILE...] 常用参数选项 --color=auto:对匹配到的串做高亮

正则表达式与grep、sed工具使用简介

正则表达式与grep.sed工具使用简介 一.正则表达式     正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 其介绍如下:      \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的子表达式任意次 + 匹配前面的子表达式一次或多次(大于等于1次) ? 匹配前