博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux扩展正则表达式
阅读量:7217 次
发布时间:2019-06-29

本文共 4701 字,大约阅读时间需要 15 分钟。

1. 扩展正则表达式

1.1 +(加号)

+ 表示前一个字符出现1次或1次以上

1.1.1 理解+

要求:取出文件内容连续出现的小写字母

[root@oldboyedu50-lnb /oldboy]# egrep '0+' oldboy.txt       grep -E===egrepmy qq is 49000448not 4900000448.[root@oldboyedu50-lnb /oldboy]# grep -E '0+' oldboy.txtmy qq is 49000448not 4900000448.[root@oldboyedu50-lnb /oldboy]# grep '0\+' oldboy.txtmy qq is 49000448not 4900000448.[root@oldboyedu-50 oldboy]# egrep '[a-z]+' oldboy.txt    可以用[a-z]+显示单词 内容过多此处不粘贴[root@oldboyedu-50 oldboy]# egrep '[a-z]+' oldboy.txt -o  -o显示查找过程amoldboy##[]与+连用 +会认为[]里面的是一个整体 所以显示为字符组

 

1.1.2 加+和不加+的区别

[root@oldboyedu50-lnb /oldboy]# egrep '0+' oldboy.txt -o    加+号 连在一起的会一起显示00000000[root@oldboyedu50-lnb /oldboy]# egrep '0' oldboy.txt -o     不加+号 单独显示00000000
View Code

1.2 | 或者

1.2.1 理解 |

[root@oldboyedu-50 oldboy]# egrep 'oldboy|linux' oldboy.txt  查找文件中oldboy或者linux的内容I am oldboy teacher!I teach linux.my blog is http://oldboy.blog.51cto.comour size is http://blog.oldboyedu.com

 

1.2.2 | 的用法

排除文件中的#和空行

/etc/ssh/sshd_config 排除文件中的#和空行

[root@oldboyedu-50 ssh]# egrep -v '^$|#' sshd_config

1.3 () (小括号)

()表示一个整体 反向引用/后向引用

 sed -r 使用扩展正则

思路:把你想要的内容保护起来 ()

          sed 在 's###g' 后两个井号之间使用  \数字 引用

[root@oldboyedu-50 oldboy]# egrep 'oldb(o|e)y' oldboy.txt            此处表示查找oldboy和oldbey[root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(.*)#\1#g'123456[root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(.*)#<\1>#g'<123456>将123456  修改为12<34>56[root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(34)#<\1>#g'12<34>56点表示任意一个字符,\2表示第二个括号。[root@znix ~]# echo 123456|sed -r 's#(.).(..).(.)#\2#g'34

1.4 {}(花括号)

前一个字符至少连续出现了n次 最多连续出现了m次

1.4.1 大括号的不同方法

0{3,6}   >=3 <=60{
3} ==30{
3,} >=30{,6} >=0 <=6

1.4.2 应用方法

[root@oldboyedu-50 oldboy]# egrep '[0-9X]{18}' id.txt     此处表示{}前面的字符出现了18次[root@oldboyedu50-lnb /oldboy]# egrep '0{3,4}' oldboy.txt 表示0出现了最少出现3次最多出现4次my qq is 49000448not 4900000448.[root@oldboyedu50-lnb /oldboy]# egrep '0{3}' oldboy.txt   表示0出现了3次my qq is 49000448not 4900000448.

1.4.3 {} 的用法

取出文件中的身份证号码

[root@oldboyedu50-lnb /oldboy]# cat id.txt金 211324198705244720万 500224197105168312任 1231231231oldboy任 3oldboy任 lidao97303136098任 alex2197303136098任 350182197303oldgir吕 211282199209113038孔 150000198309176071邹 371001197412221284贺 130185200011215926杜 362522198711278101向 14052219961008852X[root@oldboyedu50-lnb /oldboy]# egrep '[0-9X]{18}' id.txt   #表示0到9和x 一共出现了18次 这样查找不精确  因为单独一个数字出现18次 也可以筛选出来金 211324198705244720万 500224197105168312吕 211282199209113038孔 150000198309176071邹 371001197412221284贺 130185200011215926杜 362522198711278101   XXXXXXXXXXXXXXXXXX向 14052219961008852X[root@oldboyedu50-lnb /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt   精确查找 但是还不是最精确的金 211324198705244720万 500224197105168312吕 211282199209113038孔 150000198309176071邹 371001197412221284贺 130185200011215926杜 362522198711278101向 14052219961008852X
View Code

1.5 ? (问号)

?前一个符号连续出现0次或1次 有或没有

?表示的信息0次或1次表示的内容和{0,1}其实是一样的

第2章 正则表达式坑

2.1 坑1 grep '0*'

会把文件内容都显示出来

0*    0次       没有            grep会把文件内容都显示出来

      0次以上   0 00000000000

[root@znix ~]# grep "0*" clsn.txt     坑1 grep '0*' 会把文件内容都显示出来I am clsn teacher!I teach linux. I like badminton ball ,billiard ball and chinese chess!my blog is http://clsn.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448.my god ,i am not oldbey,but clsn![root@znix ~]# grep -o "0*" clsn.txt00000000
View Code

 

2.2 坑2 [oldboy]

[oldboy]查找的内容是o l d b o y  而不是oldboy整体

[root@oldboyedu50-lnb /oldboy]# grep '[oldboy]'   oldboy.txt在此处oldboy查找的内容是o l d b o y  而不是oldboy整体I am oldboy teacher!I teach linux.I like badminton ball ,billiard ball and chinese chess!my blog is http://oldboy.blog.51cto.comour size is http://blog.oldboyedu.commy qq is 49000448not 4900000448.my god ,i am not oldbey,but OLDBOY![root@oldboyedu50-lnb /oldboy]# grep -o '[oldboy]'   oldboy.txt  显示查找过程oldboyllb
View Code

 

2.3 坑3 [^#^$]  [^$]  [^#$]

[]中 $ . 没有特殊含义 类似于\转义字符

[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt               查看文件内容I am oldboy teacher!I teach linux.I like badminton ball ,billiard ball and chinese chess!+++++\\\\\\!!!!$$$$$$^^^####!!!^^^^^$$$$@@@@@####[root@oldboyedu50-lnb /oldboy]# grep '[^#^$]'  oldboy.txt    此处表示排除#^$  相当于去除了特殊含义I am oldboy teacher!I teach linux.I like badminton ball ,billiard ball and chinese chess!+++++\\\\\\!!!!$$$$$$^^^####!!!^^^^^$$$$@@@@@####[root@oldboyedu50-lnb /oldboy]# grep '\.$'  oldboy.txt       此处表示查找以.结尾的I teach linux.not 4900000448.[root@oldboyedu50-lnb /oldboy]# grep '[.]$'  oldboy.txt      此处也表示查找以.结尾的 与\意思相同I teach linux.not 4900000448.
View Code

 

2.4 坑4 grep -v与[^a-z]

[^a-z]          排除按字符 某个字符 某些字符

grep -v [a-z]     排除按行

[root@oldboyedu50-lnb /oldboy]# grep '[^a-z]'  oldboy.txt[root@oldboyedu50-lnb /oldboy]# grep -v '[a-z]'  oldboy.txt

转载于:https://www.cnblogs.com/wenrulaogou/p/9403371.html

你可能感兴趣的文章
跟着老司机玩转Node自定义命令行
查看>>
react-redux的Provider和connect
查看>>
杂七杂八的前端基础01——函数作用域
查看>>
new操作符具体干了啥
查看>>
iOS响应链
查看>>
『中级篇』docker容器安装wordpress(37)
查看>>
设备节点监听--走在 input 分析之前
查看>>
一行代码实现微光效果
查看>>
React Native学习之 ListView 的简单使用
查看>>
Java 8流操作
查看>>
Load和Initialize往死了问是一种怎样的体验?
查看>>
一致性 Hash 算法的实际应用
查看>>
一个文科妹子走上前端开发不归路(干货分享)
查看>>
中国行政区划信息JS库china-location
查看>>
Vert.x 发送邮件
查看>>
苹果文档 UISearchController的介绍
查看>>
iOS计步器实例
查看>>
vue国际化-vue-i18n的配置
查看>>
Java引用计数与实现
查看>>
Broadcast源码分析
查看>>