详解linux正则表达式(基础正则表达式+扩展正则表达式)

所属分类: 网络编程 / 正则表达式 阅读数: 868
收藏 0 赞 0 分享

正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一定离不开正则表达式的配合。

1、什么是正则表达式?

简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤、替换或者输出需要的字符串。linux正则表达式一般以行为单位处理的。

2、为什么要学正则表达式

在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要从大量的字符串内容中查找符合工作需要的特定字符串,这就要靠正则表达式,因此,可以说正则表达式就是为过滤这样字符串的需求而生的!

3、容易混淆的两个注意事项:

1)linux正则表达式一般是以行为单位处理的。

2)正则表达式和我们常用的通配符特殊字符是有本质区别的,例如:ls *.txt 这里的*就是通配符(表示所有),不是正则表达式。

注意字符集问题:

确保字符集:export LC_ALL=C

---------------------------------------------

基础正则表达式+扩展正则表达式含义解释:

---------------------------------------------

.   代表且只能代表任意一个字符(不包括空行)
*   重复前面任意0个或多个字符
.*   匹配所有字符。(包括空行)
sed -ri 's#(.*)#\1#g' bqh.txt
把前面正则匹配的括号内的结果,在后面用\1取出来操作。
^   表示以什么开头,^bqh 以bqh开头
$   是以什么结尾
^$   表示空行。
\ 例\.   就只代表点本身,转义符号,让有着特殊身份移动的字符,脱掉马甲,还原原型\$
^.*   以任意多个字符开头。
.*$   以任意多个字符结尾。
(.*)   从第一字符匹配,到空格停止,
[abc]   匹配字符集合内的任意一个字符【a-zA-Z】
[^abc]   匹配不包括^后的任意字符的内容;中括号里的^为取反,注意和以...开头区别。
a\{n,m\}   重复n到m次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n,\}   重复至少n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
\{n\}   重复n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。
①^word   搜索以word开头的;vi ^ 一行的开够
②word$   搜索以word结尾的;vi $ 一行的开头
③^$   表示空行。
扩展的正则表达式:ERP(egrep或grep -E)

+   重复一个或一个以上前面的字符
? 复0个或一个0前面的字符
|   用或的方式查找多个符合的字符串
()  找出“用户组”字符串

实战举例:

^m 搜索以m开头的

 

p$搜索以p结尾的

 

^$表示空号

 

去掉空行:grep –v “^$” bqh.log

查看去掉的后的空行内容:grep -vn “^$” bqh.log 

 

.   代表且只能代表任意一个字符(不包括空行)


查找带0的字符:


.*   匹配所有字符。(包括空行)


查找以.结尾的字符:

错误方法:grep ".$" bqh.log

正确方法:

grep “\.$” bqh.log 


注意:\. 就只代表点本身,转义符号,让有着特殊身份移动的字符,脱掉马甲,还原原型\$

*   例1*重复1个或多个前面的一个字符。

grep –o “1*” bqh.log  //-o精确匹配

^.*      以任意多个字符开头。

.*$      以任意多个字符结尾。


[abc]    匹配字符集合内的任意一个字符【a-zA-Z】

匹配字符集合内的a-z任意一个小写字符:

[^abc] 匹配不包括^后的任意字符的内容;中括号里的^为取反,注意和以...开头区别


匹配非数字的任意字符:

a\{n,m\}  重复n到m次,前一个重复的字符。如果有用egrep/sed -r /grep -E可以去掉斜线。


\{n,\}    重复至少n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。


\{n\}    重复n次,前一个重复的字符。如果有用egrep/sed -r 可以去掉斜线。


注意:egrep,grep -E或sed -r过滤一般特殊字符可以不转义。多使用参数。

 ---------------------------------------------------------------------------------

扩展的正则表达式:ERP(egrep或grep -E)

+   重复一个或一个以上前面的字符

?  复0个或一个0前面的字符

|   用或的方式查找多个符合的字符串

()  找出“用户组”字符串

以上所述是小编给大家介绍的详解linux正则表达式(基础正则表达式+扩展正则表达式),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

深入分析正则表达式的子模式

在正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。下面我们就来详细了解下子模式
收藏 0 赞 0 分享

可以少写1000行代码的正则表达式

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。知道这20个正则表达式,能让你少写1000行代码,想知道吗
收藏 0 赞 0 分享

20个正则表达式必知(能让你少写1,000行代码)

这篇文章主要介绍了20个正则表达式必知(能让你少写1,000行代码)的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数

这篇文章主要介绍了JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java常用正则表达式

这篇文章主要介绍了java常用正则表达式,需要的朋友可以参考下
收藏 0 赞 0 分享

如何快速学习正则表达式

在日常工作中,我们经常写正则表达式,比如在表单中经常用来验证用户输入的格式是否正确。接下来通过本文给大家介绍如何快速学习正则表达式,感兴趣的小伙伴一起学习吧
收藏 0 赞 0 分享

运用正则表达式匹配所有表名

这篇文章主要介绍了运用正则表达式匹配所有表名 的相关资料,非常不错,具有参考借鉴价值,需要的朋友一起看看吧
收藏 0 赞 0 分享

浅析正则表达式-替换原则(.NET) 图文

最近经常用到替换的东西所以就出来整理下,这里要分享的是正则表达式里面的替换原则,首先要声明的是这里提及到的替换原则是.NET里面的正则表达式的替换原则
收藏 0 赞 0 分享

正则替换实现输入框只能有数字、中英文逗号

最近在开发过程中,需要一个输入框里面只能有数字与中英文逗号,因为是相关文章,其它的也不让出现,容易造成问题,编程容易把介绍复制到里面,所以想到了这个方法
收藏 0 赞 0 分享

自动检测数字替换非数字的正则表达式

这篇文章主要介绍了自动检测数字替换非数字的正则表达式 ,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多