各位看官,咱们在上一回主要说了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工具。
各位看官,关于通配符和正则表达式的内容,咱们都说完了。欲知后事如何,且听下回分解。