shell中参数的模式匹配

来源:互联网 发布:数控车床g33螺纹编程 编辑:程序博客网 时间:2024/05/18 01:21

模式匹配

参数扩展还包括了一些模式匹配功能,该功能带有在文件名扩展或 globbing 中使用的通配符功能。注意:这不是 grep 使用的正则表达式匹配。

表 2. Shell 扩展模式匹配扩展目的${PARAMETER#WORD}shell 像文件名扩展中那样扩展 WORD,并从 PARAMETER 扩展后的值的开头删除最短的匹配模式(若存在匹配模式的话)。使用 ‘@’ 或 ‘$’ 即可删除列表中每个参数的模式。${PARAMETER##WORD}导致从开头删除最长的匹配模式而不是最短的匹配模式。${PARAMETER%WORD}shell 像文件名扩展中那样扩展 WORD,并从 PARAMETER 扩展后的值末尾删除最短的匹配模式(若存在匹配模式的话)。使用 ‘@’ 或 ‘$’ 即可删除列表中每个参数的模式。${PARAMETER%%WORD}导致从末尾删除最长的匹配模式而不是最短的匹配模式。${PARAMETER/PATTERN/STRING}shell 像文件名扩展中那样扩展 PATTERN,并替换 PARAMETER 扩展后的值中最长的匹配模式(若存在匹配模式的话)。为了在 PARAMETER 扩展后的值开头匹配模式,可以给 PATTERN 附上前缀 #,如果要在值末尾匹配模式,则附上前缀 %。如果 STRING 为空,则末尾的 / 可能被忽略,匹配将被删除。使用 ‘@’ 或 ‘$’ 即可对列表中的每个参数进行模式替换。${PARAMETER//PATTERN/STRING}对所有的匹配(而不只是第一个匹配)执行替换。

清单 11 给出了模式匹配扩展的一些基本用法。


清单 11. 模式匹配示例
                [ian@pinguino ~]$ x="a1 b1 c2 d2"[ian@pinguino ~]$ echo ${x#*1}b1 c2 d2[ian@pinguino ~]$ echo ${x##*1}c2 d2[ian@pinguino ~]$ echo ${x%1*}a1 b[ian@pinguino ~]$ echo ${x%%1*}a[ian@pinguino ~]$ echo ${x/1/3}a3 b1 c2 d2[ian@pinguino ~]$ echo ${x//1/3}a3 b3 c2 d2[ian@pinguino ~]$ echo ${x//?1/z3}z3 z3 c2 d2

原创粉丝点击