shell编程之正则表达式

本文通过具体实例详细介绍了正则表达式的使用方法,包括如何利用各种元字符进行精确匹配,如查找特定字符串开头的行、列出目录中的子目录及特定格式的文件等。

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

先建一文件吧,就叫做aa.txt
内容如下:(本人叫周元军,就以我的名字做内容吧)
zhouzhouzhouzhouyuanjun
zhouzhouzhouyuanjun
zhouzhouyuanjun
zhouyuanjun
yuanjun
Zhouyuanjun
Yuanjun
Jun

基本元字符就那几个:*.^$[]()/。
相信没人不知道,这里重点强调下*,它用在一个单字符或者单词后面,匹配0个或多个此字

符或单词。

例子1:我们要找到以0个或多个“zhou”开头行,怎么办呢?
#grep "/(zhou/)*yuanjun" aa.txt
结果如何呢?如果把*去掉,又会有什么结果呢?这次明白*的作用了吧

例子2:要是列出一个目录里面的所有子目录,怎么办呢?
#ls -l|grep "^d"
要是列出所有用户均可执行的文件怎么办呢?
#ls -l|grep "^...x..x..x"
列出以.txt结尾的所有文件
#ls -l|grep "/.txt$"
列出所有空行
#ls -l|grep "^$"

例子3:我们接着例子1来,如果我们想找以两个“zhou"开头的行怎么办呢?
#grep "/(zhou/)/{2/}" aa.txt
两次以上呢?
#grep "/(zhou/)/{2,/}" aa.txt
一次到3次呢?
#grep "/(zhou/)/{1,3/}" aa.txt

例子4:找出所有以大写字母开头的行
#grep "^[A-Z]" aa.txt
以大写字母开头,以"jun"结尾的
#grep "^[A-Z].*jun$" aa.txt

例子5:ip地址经常需要用,怎么匹配呢?这要分为几种情况,下面给出一种办法:
#ITEM="/([01]/{0,1/}[0-9]/{1,2/}/|2[0-4][0-9]/|25[0-5]/)"
#grep "^$ITEM/.$ITEM/.$ITEM" ipaddr
ipaddr是一些ip地址,自己看吧,我测试了,可以正确匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值