Linux程序设计(Linux shell编程十三)

本文深入探讨了Linux shell编程中的通配符和正则表达式,包括它们的用途、基本语法及应用实例,旨在帮助读者理解如何在shell脚本中高效地进行文件路径匹配与文本过滤。

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


各位看官,咱们在上一回主要说了Linux shell编程中的标准输入和标准输出,以及管道和重定向。估计

大家对各种输入和输出都感觉烦了吧,咱们今天说一些与输入输出无关的内容:通配符和正则表达式。


通配符:*?。通配就是把不确定的文本扩展成具体文本的过程。好拗口呀。还是举个例子来说一下吧。

比如us?就是一个不完整的文件,可以将其扩展成具体的文本:usr。通配需要借助通配符来实现其功能,

常用的通配符有*和?。下面咱们来说说各个通配符的含义。


通配符*表示任意位置的任意字符。例子:ls a*会把当前目录中以a开头的文件或者文件夹都显示出来。


通配符?表示它所在位置的任意一个字符。例子:ls a?会把当前目录中以a开头并且后面只有一个字符的

            文件或者文件夹都显示出来。对比一下可以发现,a*对文本中字符的数量没有限制,a?限制文本

            中只有一个字符。注意,这是他们的区别。


看官们,通配 符的内容不多,估计大家都不累,那么咱们接着说正则表达式怎么样?OK。


正则表达式:就是一种模式模板,Linux命令可以使用该模板去过滤无用的数据,从而得到有用的数据。

正则表达式的模式有文本,字符,字符和文本混合体。文本可以是自己定义的任何本文,比如hello也

可以当作文本。特殊字符有.*[]^$<>{}\+?|.下面一一说明这些特殊符号的意义。

.用来匹配它所在位置的任意一个字符

*用来匹配它前面的字符有0次或者多次重复

?用来匹配它前面的字符有0次或者1次重复

+用来匹配它前面的字符有1次或者多次重复

^用来匹配行首的字符是它后面的字符。

$用来匹配行尾的字符是它前面的字符。它通常写在字符后面,和^的功能正好相反。

[ ]用来匹配一个范围。比如[ Mint Ubuntu Debin]表示匹配其中的任意一个元素。[1-9]表示匹配1-9这个

范围内的数字。[a-z]表示匹配a到z之间的字母。^和[]一起使用时表示取反,例如[^1-3]表示匹配的内容是

不在1到3范围内的数字。

\转义符号。因为这些特殊符号有专门的意义,所以如果想在文本中使用他们的话,需要使用转义字符。

|表示或和关系, 可以把多个正则表达式通过它连接起来

<>表示精确匹配,比如book,good,都有oo。如时使用<>精确匹配oo时它们不会被搜索到。


各位看官,正则表达式是一个独门而且庞大的分支,这里只是做一些简单的说明,如果大家对正则表达式

感兴趣,我们在以后的回合中再做详细的介绍和说明。因此这里不再举例子了。


细心的看官们已经发现*和?这两个符号既是通配符,也是正则表达式中的特殊字符。不过它们的意义有些

不一样,大家需要注意一下。关于通配符主要使用在bash中,在bash中经常使用通配符进行通配。而正

则表达式使用在bash的命令或者工具中,比如grep,find命令以及sed,awk工具。


各位看官,关于通配符和正则表达式的内容,咱们都说完了。欲知后事如何,且听下回分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值