文章目录
shell 正则表达式
#:表示从左边算起第一个
%:表示从右边算起第一个
##:表示从左边算起最后一个
%%:表示从右边算起最后一个
换句话来说,#总是表示左边算起,%总是表示右边算起。*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的’/‘和’.’)的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的’/‘和’.’)的右边,表示删除指定字符及其右边的内容。这里的’'的位置不能互换,即不能把号放在#或##的右边,反之亦然。例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。
注:var是待处理的字符串
删除从右边数最后一个.右边的字符(含.)
${var%%.*}
删除从右边数第一个.右边的字符(含.)
${var%.*}
删除从左边最后一个.的左边的字符(含.)
${var##*.}
删除从左边第一个.的左边的字符(含.)
${var#*.}
知道上面规则,提取各种元素就变得很容易
提取 目录
${var%/*}
提取文件名
${var##*/}