1.从开头(#)或结尾(%)打印不匹配的内容
str=abc12342341
echo ${str#a*c} #表示把以字符a开头到c结束最短匹配这部分忽略掉打印:12342341
echo ${str##a*c} ##表示把以字符a开头到c结束最长匹配这部分忽略掉打印: 12342341
echo ${str##b*c} --从开头没有匹配到全部打印:abc12342341
echo ${str%3*1} %结尾最短匹配
2.匹配并替换
echo ${str/23/bb} --将包含的23字符替换为bb打印(匹配一次): abc1bb42341
echo ${str//23/bb} --将包含的23字符替换为bb打印(全部替换): abc1bb42341
echo ${str/#23/xx} --将开头的23字符替换为xx打印(匹配一次): abc12342341
echo ${str/%23/xx} --将结尾的23字符替换为xx打印(匹配一次): abc12342341
3. expr 显示匹配内容
string=abc12342341
expr match $string '([a-c]*[0-9]*)' //abc12342341 从开头匹配等同expr $string : '([a-c]*[0-9]*)'
expr $string : '([a-c]*[0-9])' //abc1
expr $string : '.*([0-9][0-9][0-9])' //341 显示括号中匹配的内容
expr $string : 'a(.*)1' //最长匹配a到1之间的字符:bc1234234