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


各位看官,咱们在上一回主要说了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工具。


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

你可能感兴趣的:(Linux程序设计)