正则搜索linux,正则表达式以及Linux文本搜索工具grep

本文详细介绍了正则表达式的基本概念、元字符、匹配次数、位置锁定、分组与引用等核心内容,同时讲解了扩展正则表达式的特点。此外,还探讨了grep工具在文本搜索中的运用,包括grep、egrep和fgrep的区别以及各种选项的使用,通过实例展示了正则表达式在grep中的实际操作。
摘要由CSDN通过智能技术生成

一正则表达式

regual Expression简称REGEXP

定义:由一类特殊字符以及文本字所编写的模式,其中有些字符不表示其字面意义,而用于统配和统配功能

分类:

基本正则表达式:BRE 贪婪模式(尽可能长地去匹配符合模式的内容

扩展表达式:ERE

BRE和ERE区别:元字符不同

基本正则表达式元字符:

字符匹配、次数匹配、位置锚定、分组及引用

一、字符匹配

.:匹配任意单个字符

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

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

\d:匹配数字

\s:匹配空格

\w:匹配任意字母数字下划线或汉字

[:digit:] :0-9

[:alpha:]所有的大小写

[:upper:]:所有大写字母

[:lower:]:所有小写字母

[:alnum:]:所有字母和数字

[:punct:]:所有的标点符号

[:space:]:空格和tab

二、匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数

*:匹配其前面的字符任意次;0,1,多次;

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

\?:匹配前面的字符0或1次

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

\{m\}:匹配前面字符m次

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

三、位置锁定

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

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

^Pattern$:用于pattern来匹配某行

^$;空白行

单词:非特殊字符组成的连续字符都称为单词

\

\>或\b:词尾锚定,用户模式的最右侧

四、分组及引用(后向引用)(重点理解)

分组符号\(\):将一个或多个字符捆绑在一起,当一个整体进行处理

分组意义:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录到内存的变量中

引用这些变量:\1:模式从左起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符。

扩展的正则表达式

扩展正则表达式元字符

字符匹配

.:匹配任意单个字符

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

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

[:digit:] :0-9

[:alpha:]所有的大小写

[:upper:]

[:lower:]

[:alnum:]

[:punct:]

[:space:]意义和正规表达式意义相同

次数匹配

*:匹配其前面的字符任意次;0,1,多次;

.*:任意长度的任意字符,不包含换行符号

?:匹配前面的字符0或1次

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

{m}:匹配前面字符m次

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

位置锚定

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

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

\

\>或\b:词尾锚定,用户模式的最右侧

分组及引用

分组符号()

a|b :a或b

c|cat :C或cat

(c|C):cat或Cat

二正则表达式之应用一:grep

grep定义:

作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行

模式:由正则表达式的元字符及文本字符做编写的过滤条件

全拼:Global search regular  experssion an print out the line

grep egrep fgrep:区别及之间转换

grep:支持正规的正则表达式 ;grep -E=egrep  grep -F=fgrep

egrep:支持扩展正则表达式    ;egrep -G=grep

fgrep:不支持正规表达式

用法

grep [OPTINONS]  PATTER  FILE ()

选项

–color=auto自动为匹配的字符着色

-i:ignorecase忽略字符大小写

-o:只显示字符串的本身

-v:–inver –match显示不被模式匹配的行

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

-F支持匹配的字符串

-q安静模式既不输出任何信息

-A数字n:显示搜索匹配到的前n行也显示

-B数字n:显示搜索匹配到的后n行也显示

-C数字n:前后n行都显示

-w:以单词进行搜索

-n显示匹配的行号

-c统计匹配的行数

– e:实现多个选项间的逻辑or关系grep –e ‘cat ’ – e ‘dog’ file

grep 结合正则表达式的实例引用:

实例一:搜索文件中含有root的用户并且不区分大小写,并且只将匹配的字符打印出来

3c8ce6380daa33c267ccb0e2e66a02de.png

实例二:显示含有root单词或者hello单词的行

3c8ce6380daa33c267ccb0e2e66a02de.png

实例三:-q模式不将结果显示到屏幕上(一般用于脚本的编写)

3c8ce6380daa33c267ccb0e2e66a02de.png

实例四:grep 结合正则表达式使用,显示出含有"rt 、rot或者roo….(任意个o)t的行并显示行号

3c8ce6380daa33c267ccb0e2e66a02de.png

实例五:分组应用 添加用户 bash、 testbash、 basher以及nologin(其shell为/sbin/nologin),而后找出 /etc/passwd文件中用户名同shell名的行

3c8ce6380daa33c267ccb0e2e66a02de.png

更多实例详见:

20160804课后作业

原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/30069

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值