shell脚本中进行字符删除操作 使用 # 和 % 进行匹配删除,具体的# 和 % 的总结如下:
${变量#匹配规则} # 从头开始匹配,最短删除
${变量##匹配规则} # 从头开始匹配,最长删除
${变量%匹配规则} # 从尾部开始匹配,最短删除
${变量%%匹配规则} # 从尾部开始匹配,最长删除
${变量/旧字符串/新字符串} # 替换变量内的旧字符串为新字符串,只替换第一个
${变量//旧字符串/新字符串} # 替换变量内的旧字符串为新字符串,全部替换
下面举几个例子进行说明
1.关于#的替换规则
~$ vari_1="I love you,Do you love me"
~$ echo $vari_1
I love you,Do you love me
# 只有一个#的时候 匹配到第一个 ov 之后就停下来了
~$ var1=${vari_1#*ov}
~$ echo $var1
e you,Do you love me # 匹配到第一个 ov停下
#配到最后一个ov 最后一个ov之前的全部删除
~$ var1=${vari_1##*ov}
~$ echo $var1
e me
2.关于%的替换规则
# %和#顺序刚好是相反的 单个% 是从后向前截取,碰到倒数第一个ov 删除 最后一个ov之后的字符串
~$ var1=${vari_1%ov*}
~$ echo $var1
I love you,Do you l
# %% 是从后匹配 一直匹配到第一个 ov出现的位子,保留字符串开始到 第一次ov出现的位置
~$ var1=${vari_1%%ov*}
~$ echo $var1
I l
3.关于 /和 //的匹配规则
# 单个/ 只是将第一个love替换为 大写的 LOVE
~$ var1=${vari_1/love/LOVE}
~$ echo $var1
I LOVE you,Do you love me
# // 是将全部的love替换为 大写的 LOVE
~$ var1=${vari//love/LOVE}
~$ echo $var1
I LOVE you,Do you LOVE me