linux正则表达式脚本,详解linux正则表达式(基础正则表达式+扩展正则表达式)...

正则表达式应用非常广泛,例如: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前面的字符

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

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

实战举例:

64c34e6366ea7c11865389097922fa31.png

^m 搜索以m开头的

5a5a7a23b4ac12735fdfdffcdbef6a28.png

p$搜索以p结尾的

a6a03c7850dfd234d845c0e96186f637.png

^$表示空号

47e8c9e9cb28224405fea2f9c9d516b0.png

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

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

5d3db6dbc42ef1e788435f1e93499c22.png

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

66b77a84e0ac525ab0bfa061825fc6c5.png

查找带0的字符:

4e3c14c372cd3a758a8ba231a78a10fc.png

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

6aa2424c7f61f540c7c838ceb0b504be.png

查找以.结尾的字符:

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

73eb1441eccf59340ecadbbb476ed9b8.png

正确方法:

grep “\.$” bqh.log

88b9b862ac46484c310a42e2ba6e0199.png

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

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

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

16369077fcb50e4b2e9cbb0a0943b595.png

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

702c7e1522774852ed81be2f27034e57.png

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

01183481f1c0a6e396931fc17c3ed2a0.png

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

e798940451be97a9716000460bbaa1fd.png

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

cc40f549b0cf8a8a05e274eae05bb342.png

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

707a0ec24fc7d644d845fba0be986e94.png

匹配非数字的任意字符:

3905fadecd8a53a54d3677c8104afea8.png

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

85c3770308cc08ce336463275d69c51a.png

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

cd06516a47cb1cb648162dbef9800989.png

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

5086c13be60155c93bd020eddf56b50f.png

93a3724e9fa3caff3b15aacd347d1a4e.png

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

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

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

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

fec085aed305df0cb319c90a66b82443.png

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

d406905c96adf1ebcb2131d598486790.png

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

4713c658dc7ab4053d22852008735bb3.png

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

f31e2f33791a8e22d3444c7dbe194c18.png

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值