正则表达式

通配符与正则表达式区别?
*.txt *.log
touch {01…10}

    作用                                                  支持的命令

通配符 方便我们进行查找文件 Linux下面大部分命令支持
正则表达式 方便我们进行过滤(在文件中查找内容) Linux三剑客 开发语言 Python Go PHP Java
在这里插入图片描述

在此之前先创建一个环境
cat oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu59 /oldboy]# grep ’ ’ oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu59 /oldboy]#
[root@oldboyedu59 /oldboy]# grep 'm KaTeX parse error: Expected 'EOF', got '#' at position 120: …yedu59 /oldboy]#̲ cat -A oldboy.…
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com $
our size is http://blog.oldboyedu.com $
my qq is 49000448$
$
not 4900000448.$
my god ,i am not oldbey,but OLDBOY! $

正则表达式
什么是正则表达式
在/etc/service文件中过滤出包含3306的行
在这个文件中找出以ssh开头的行
含义
发明一套符号
不同符号有不同含义
方便我们在文件中查找/过滤内容
正则表达式 Regular Expression RE
正则表达式的分类
基础正则
Basic RE BRE
^ $ ^$ * .* [] [^]
扩展正则
Extended RE ERE
+ | () {} ?
使用正则注意事项
注意中文符号
‘’ “” . ^ $ () {} []
‘’“”. ¥ () {} 【】
给grep egrep加上颜色
CentOs7系统完成
CentOs6自己添加别名

基础正则
	^
		以...开头的行
		    ^m
		^oldboy 

在这里插入图片描述
$
以…结尾的行
在这里插入图片描述
这里m的后面有一个空格(坑)
在这里插入图片描述
h$
在这里插入图片描述
cat -A 显示出文件中所有隐藏符号 每一行结尾==加上$

^$
空行 这一行什么都没有
排除空行
在这里插入图片描述

任意一个字符(单个)
不会匹配出空行
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
grep -o
显示grep每次过滤出什么内容(匹配什么内容)
显示grep执行过程

	找出文中以.(小数点)结尾的行

		grep  '\.$'  .oldboy.txt             

在这里插入图片描述

	\ 
		转义字符
			脱掉马甲 打回原形
			去掉符号原有特殊含义

			转义字符系列
				撬棍系列:
				  \n
					回车
				 \t
					按tab  按一次tab 8个空格长度区域

				把oldboy.txt回车替换为\t
					tr '\n' '\t'  < oldboy.txt
				echo
					-e
						让echo支持转义字符\n   \t
					-n
						不输出每行结尾的回车

在这里插入图片描述
在这里插入图片描述

	*
		前1个字符连续出现0次或0次以上
			连续出现====重复(repetition)
		000*
		0000000000000*     连续出现的0
		oldboy*        连续出现的字母

在这里插入图片描述
在这里插入图片描述

	.*
		所有 任意字符
		可以间接的表现出并且
		特点:贪婪性
			.*o
			匹配能匹配多少就匹配多少 来者不拒
		正则表达式表示所有(.*)或者连续出现的时候 会产生贪婪 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[]
[0-9]
[a-Z]====[a-zA-Z]
[abc]
相当于1个字符,匹配到a或者b或者c
grep ‘[a-z]’ oldboy.txt
grep ‘[A-Z]’ oldboy.txt
grep ‘[a-zA-Z]’ oldboy.txt
grep ‘[a-z,A-Z]’ oldboy.txt 会显示标点(坑)

		大小写字母+数字
			[[a-zA-Z]0-9]
			[a-Z0-9]
			[0-Z]
         中括号里面写什么就找什么
	[^]
		[^abc]
			不要a不要b不要c
	     	尖号只有在中括号第一个位置才表示排除或取反

在这里插入图片描述

grep -v 与 [^abc] 区别?
grep -v 字符 不要a不要b不要c
[^abc] 行 排除某一行

grep ‘1’ oldboy.txt
grep ‘[mn.]$’ oldboy.txt
grep ‘2.*[mn.]’ oldboy.txt

扩展正则表达式
	+
		前1次连续出现1次或多次
		一般就是[]一起使用
			例如   egrep -o [a-zA-Z]+ oldboy.txt

	|
		或者 ![在这里插入图片描述](https://img-blog.csdnimg.cn/201904172127132.png)
	?
		前一个字符出现0次或1次

在这里插入图片描述
{}
连续出现
*
>=0
+
>=1
b{m,n}前1个字符连续出现至少m次最多出n次
>=m <=n
b{m,} 前1个字符连续出现至少m次
>=m
b{m} 前一个字符连续出现m次
==m
b{,n} 前1个字符连续出现最多n次
<=n
连续出现
*
>=0
+
>=1 在这里插入图片描述
()
用来表示后反引用(反向引用)
被括起来的内容相当于一个整体
括号表达式
[[:alnum:]]
大小写字母和数字
查找帮助
man grep
info grep
正则总结
BRE ERE区别
符号不同
支持的命令不同
grep
注意坑
中英文符号
[]
分类
连续出现
*
+
{}

其他
^
$
^$
.
*
.*

[]
[^]

显示以m或n或o开头的行
以m或n或点结尾的行
显示以m或n或o开头的并且以m或n或点结尾的行

#显示以m或n或o开头的行
[root@oldboyedu59 /oldboy]#
[root@oldboyedu59 /oldboy]# grep ‘3’ oldboy.txt
my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

#以m或n或点结尾的行
[root@oldboyedu59 /oldboy]#
[root@oldboyedu59 /oldboy]# grep ‘[mn.]$’ oldboy.txt
I teach linux.
not 4900000448.

#显示以m或n或o开头的 并且 以m或n或点结尾的行
[root@oldboyedu59 /oldboy]# grep ‘4.*[mn.]$’ oldboy.txt
not 4900000448.

#找出oldboy.txt 中连续出现的字母(大写或小写)
[root@oldboyedu-59 ~]# egrep -o [a-zA-Z]+ oldboy.txt

[root@oldboyedu59 /oldboy]# egrep ‘0{1,3}’
[root@oldboyedu59 /oldboy]# egrep ‘0{1,3}’ oldboy.txt
my qq is 49000448
not 4900000448.
[root@oldboyedu59 /oldboy]# egrep -o ‘0{1,3}’ oldboy.txt
000
000
00
[root@oldboyedu59 /oldboy]# egrep ‘0{2,4}’ oldboy.txt
my qq is 49000448
not 4900000448.
[root@oldboyedu59 /oldboy]# egrep ‘0{3}’ oldboy.txt
my qq is 49000448
not 4900000448.

id.txt
金 211324198705244720
万 500224197105168312
任 1231231231oldboy
任 3oldboy
任 lidao97303136098
任 alex2197303136098
任 350182197303oldgir
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X
取出文件中正确的身份证号码的行
egrep ‘[0-9]{17}[0-9X]’ 213.txt

[^$] 排除符号

[root@oldboyedu59 /oldboy]# egrep ‘oldboy|oldbey’ oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu59 /oldboy]# egrep ‘oldb[oe]y’ oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu59 /oldboy]# egrep ‘oldbo|ey’ oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu59 /oldboy]# egrep ‘oldb(o|e)y’ oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!


  1. mno ↩︎

  2. mno ↩︎

  3. mno ↩︎

  4. mno ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值