shell 中百分号和井号删除字符串

作者

写shell脚本的时候,经常需要做删除字符串的操作,经常忘记,这里记录一下。

str=aaa.bbb.ccc.ddd
str1=${str%.*}
str2=${str%%.*}


str3=${str#*.}
str4=${str##*.}

echo "str1 = " $str1
echo "str2 = " $str2
echo "str3 = " $str3
echo "str4 = " $str4

输出

str1 =  aaa.bbb.ccc
str2 =  aaa
str3 =  bbb.ccc.ddd
str4 =  ddd

含义

1)两个的比一个删除的多
2)% 删除后面的字符, # 删除前面的字符
3) * 表示任何字符
4) 注意的地方 (.* 和 *.)

方向

\%.* -- 删除后面的字符直到遇到字符 . 并包括 .
#*. -- 删除前面的字符直到遇到字符 . 并包括 .

回复

邮箱地址不会被公开。