第12课时:正则表达式

本文介绍了正则表达式和通配符的区别,重点讲解了grep命令的使用,包括显示文件中包含特定内容的行。通过多个实例展示了如何使用正则符号如`.`、`*`、`^`和`$`进行匹配。例如,查找包含特定字符序列的行,或者定位行首尾的特定模式。此外,还展示了如何利用这些符号实现复杂的文本过滤和查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

  • 正则就是一些具有特殊含义的符号

  • 例如:* . ^ $     (还有很多就不列举了)

正则和通配符的区别

  • 通配符主要是针对文件名来使用的,例如找文件夹名是以 a 为开头 就是 a*

  • 正则主要是针对文件的内容来使用,例如找文件中以a为开头的行,需要使用的就是正则,答案 a.*

grep命令

作用:从文件中过来满足条件的行

格式:grep [选项] 条件 文件名

选项:

  • -v:显示文件中不包含搜索内容的行数

例子:

#1 先创建一个测试文件

[root@localhost ~]# vi book.txt

MY NAME IS  zhaosi
I come form SHIJIAZHUANG xinle
I am   22years old this year.
nice to meet#you all 
i hope we can be good friends.
#how are you

#2 从测试文件中过滤出包含 # 的行

[root@localhost ~]# grep (有空格)"#"  (这里有空格)book.txt 
nice to meet#you all 
#how are you

#3 从测试文件中过滤出包含 zhaosi 的行
[root@localhost ~]# grep   "zhaosi"  book.txt

MY NAME IS  zhaosi

正则符号

  • 符号
  • 含义
  • 举例

   .

代表任意一个字符

*

代表其前面的字符出现任意次数

.*

表示任意个任意字符

^

表示的是行首部

$

表示的是行尾部

例子:

1)关于  .  的案例

  • 先创建测试文件

[root@localhost ~]# vi book.txt

MY NAME IS  zhaosi
I come form SHIJIAZHUANG xinle
I am   22years old this year.
nice to meet#you all 
i hope we can be good friends.
#how are you

  •   过滤出f和m之间有两个字符的行

[root@localhost ~]# grep  "f..m"  book.txt
I come form SHIJIAZHUANG xinle

案例2)关于*的例子

  • #准备测试文件

[root@localhost ~]# vi book.txt

MY NAME IS  zhaosi

I come form SHIJIAZHUANG xinle
I am   22years old this year.
nice to meet#you all 
i hope we can be good friends.
#how are you
a
ab
bbbbbbba
b

  •  过滤出b前面有任意个a的行【0  1  多】

   [root@localhost ~]# grep "a*b" book.txt
   i hope we can be good friends.
   ab
   bbbbbbba
   b

 

案例3)关于 .* 的案例

1.过滤出包含字母 o 和 e 的行,而且l要在前

  • 先准备测试文件

[root@localhost ~]# vi book.txt

MY NAME IS  zhaosi
I come form SHIJIAZHUANG xinle
I am   22years old this year.
nice to meet#you all 
i hope we can be good friends.
#how are you
a
ab
bbbbbbba
b

答案如下:

[root@localhost ~]# grep  "o.*e"  book.txt
I come form SHIJIAZHUANG xinle
I am   22years old this year.
nice to meet#you all 
i hope we can be good friends.
#how are you

 2.过滤出含 form 的行

[root@localhost ~]# grep "form" book.txt
I come form SHIJIAZHUANG xinle

3.过滤出以nice开头的行

[root@localhost ~]# grep "^nice" book.txt
nice to meet#you all 

4.过滤出以you结尾的行

[root@localhost ~]# grep "you$" book.txt
#how are you

 

5.过滤出以n为开头 ,中间包含e的,l为结尾的行

[root@localhost ~]# grep "^n.*e.*l$" book.txt

nice to meet#you all

6.过滤出开头第二个字符是h的行

[root@localhost ~]# grep "^.h" book.txt
#how are you

 

7.过滤出结尾第二个字符是s的行

[root@localhost ~]# grep "s.$" book.txt
MY NAME IS  zhaosi
i hope we can be good friends.

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值