.Linux基础正则表达式字符

本文详细介绍了在Linux环境下,如何使用正则表达式配合grep、sed、awk等工具进行文件过滤,包括以特定字符开头、结尾、排除空行、同时满足多个条件等实例。
摘要由CSDN通过智能技术生成

^oldboy 以oldboy开头
oldboy$ 以oldboy结尾
^$ 空行
. 匹配任意单个字符
* 重复前一个字符0或n次
.* 匹配所有
c. 数据准备
#重要说明:Linux基础正则表达式仅适用于grep、sed、awk、egrep(grep -E)
[root@oldboyedu ~]# touch file{01..05}.txt
[root@oldboyedu ~]# touch {01..05}.txt
[root@oldboyedu ~]# ls
01.txt 03.txt 05.txt file02.txt file04.txt
02.txt 04.txt file01.txt file03.txt file05.txt
d. 过滤出以 file开头的所有文件
##方法1:利用通配符*匹配
[root@oldboyedu ~]# ls file*
file01.txt file02.txt file03.txt file04.txt file05.txt
##方法2:利用正则^
[root@oldboyedu ~]# ls |grep "^file"
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt

e. 过滤出以 txt 结尾的所有文件
[root@oldboyedu ~]# ls|grep "txt$"
01.txt
02.txt
03.txt
04.txt
05.txt
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt

f. 过滤空行( ^$
##测试准备
[root@oldboyedu ~]# echo 1 >>file01.txt
[root@oldboyedu ~]# echo >>file01.txt ##生成空行
grep的-E选项,允许同时过滤多组内容,等价于egrep。
h.过滤含有0后是任意字符的文件
[root@oldboyedu ~]# echo >>file01.txt ##生成空行
[root@oldboyedu ~]# echo 2 >>file01.txt
[root@oldboyedu ~]# cat file01.txt
1
2
## 过滤空行
[root@oldboyedu ~]# grep "^$" file01.txt
## 排除空行
[root@oldboyedu ~]# grep -v "^$" file01.txt
1
2

g. 同时过滤出含有 file 开头和 jpg 结尾的所有文件
##准备测试数据
[root@oldboyedu ~]# touch a{1..3}.jpg
[root@oldboyedu ~]# ls
01.txt 03.txt 05.txt a2.jpg file01.txt file03.txt file05.txt
02.txt 04.txt a1.jpg a3.jpg file02.txt file04.txt
##同时过滤出含有file开头以及jpg结尾的所有文件
[root@oldboyedu ~]# ls|grep -E "^file|jpg$"
a1.jpg
a2.jpg
a3.jpg
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt
[root@oldboyedu ~]# ls|egrep "^file|jpg$"
a1.jpg
a2.jpg
a3.jpg
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt
## 实验:
yum install nginx -y
egrep -v "^ $| #" /etc/nginx/nginx.conf [root@oldboyedu ~] # ls|grep "0."
01 .txt
02 .txt
03 .txt
04 .txt
05 .txt
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt
i. 过滤以 0 及后是任意字符【开头】的文件
[root@oldboyedu ~] # ls|grep "^0."
01 .txt
02 .txt
03 .txt
04 .txt
05 .txt
j. 过滤包含 file, 并且后面有 0 0 ,以及多个 0 的文件。
[root@oldboyedu ~] # touch file00
[root@oldboyedu ~] # touch file000
[root@oldboyedu ~] # ls|grep "file0*"
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt
file00
file000
k. 过滤包含 file0 ,然后后面任意多个字符的文件
[root@oldboyedu ~] # touch file0x
[root@oldboyedu ~] # touch file0y
[root@oldboyedu ~] # touch file0yyy
[root@oldboyedu ~] # ls|grep "file0.*" ##.* 表示所有
file00
file000
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt
file0x
file0y
file0yyy
## 学习:根据结果反推命令的意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值