『现学现忘』Shell编程 — 22、基础正则表达式

本文详细介绍了Shell编程中的基础正则表达式,包括与通配符的区别、基本符号的使用,以及各种练习案例,如"*"、"."、"^"和"$"、"[ ]"和"[^]"的匹配规则。通过实例演示了如何在Shell中使用正则表达式进行字符串匹配,并强调了限位符的重要性和正则表达式的包含匹配特性。
摘要由CSDN通过智能技术生成

1、正则表达式说明

正则表达式和通配符的区别

  • 正则表达式用来在文件中匹配符合条件的字符串。
  • 通配符用来匹配符合条件的文件名。

在Shell中,使用在文件当中搜索字符串的命令,如grepawksed等命令(文本操作三剑客),可以支持正则表达式。

而在系统当中搜索文件的命令,如lsfindcp这些命令不支持正则表达式,所以只能使用通配符来进行匹配了。

  • 在Shell中只要是匹配字符串,都适用于正则匹配。
  • 正则表达式匹配的是以一行为单位进行包含匹配的,匹配上就显示输出该行文本,否则不显示。

2、基础正则表达式

元字符 作用
* 匹配前一个字符匹配0次或任意多次。
. 匹配除了换行符外任意一个字符。
^ 匹配行首。例如:^hello会匹配以hello开头的行。
$ 匹配行尾。例如:hello$会匹配以hello结尾的行。
[] 匹配中括号中指定的任意一个字符,只匹配一个字符。
例如:
[aoeiu]匹配意一个元音字母,
[0-9]匹配任意一位数字,
[a-z][0-9]匹配小写字和一位数字构成的两位字符。
[^] 匹配除中括号的字符以外的任意一个字符。
例如:
[^0-9]匹配任意一位非数字字符,
[^a-z]表示任意一位非小写字母。
\ 转义符。用于取消将特殊符号的含义取消。
\{n\} 表示其前面的字符恰好出现n次。
例如:
[0-9]\{4\}匹配4位数字,
[1][3-8][0-9]\{9\}匹配手机号码。
\{n,\} 表示其前面的字符出现不小于n次。
例如:
[0-9]\{2,\}表示两位及以上的数字。
\{n,m\} 表示其前面的字符至少出现n次,最多出现m次。
例如:
[a-z]\{6,8\}匹配6到8位的小写字母。

注意:Shell语言不是一个标准的完整语言,在其他语言中的正则表达式中,是不分基础正则和扩展正则的。而Shell认为你不需要拿正则写太过复杂的字符串筛选格式,所以Shell建议把正则表达式分成基础正则和扩展正则两种。

3、练习

(1)准备工作

创建一个测试文档test.txt

Seven times have I despised my soul:
				——Kahlil Gibran

The first time when I saw her being meek that she might attain height.

The second time when I saw her limping before the crippled.

The third time when she was given to choose between the hard and the easy, and she chose the easy.

The fourth time when she committed a wrong, and comforted herself that others also commit wrong.

The fifth time when she forbore for weakness, and attributed her patience to strength.

The sixth time when she despised the ugliness of a face, and knew not that it was one of her own masks.

And the seventh time when she sang a song of praise, and deemed it a virtue.

(内容为纪伯伦——我曾七次鄙视自己的灵魂)

还有,为了方便查看,我们可以给grep命令配置带有颜色输出,也就是给grep命令定义一个别名。

在当前用户家目录中的~/.bashrc文件中配置grep命令别名:

# 我们当前的用户是root用户
# 执行命令
[root@localhost ~]# vim /root/.bashrc 

# 添加内容
alias grep='grep --color=auto'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值