- str=abcdef1234whag8as
- 2045 $ echo ${str/123/000/}
abcdef000/4whag8as - 2046 $ echo ${str/123/000}
abcdef0004whag8as
4.2047 $ echo ${str/123/}
abcdef4whag8as
5.2048 $ echo ${str/[0-9]/} 只替换了1
abcdef234whag8as
6.2049 $ echo ${str//[0-9]/}
abcdefwhagas
思考, 怎么只替换第一段数字,其后的不动?做不到吧?
7.2050 $ echo ${str/[0-9]*/} *表示任意字符了,而不是重复前面的模式了
abcdef
8.2051 $ echo ${str/[0-9]?/}
abcdef34whag8as
2052 $ echo ${str/[0-9]???/}
abcdefwhag8as
? 表示站位了,也无法代表前面的模式. + 也没用 - 2057 $ echo ${str//[^0-9]/} 去掉所有非数字
12348
总结: 模式开头使用一个斜杠表示职匹配一次出现,使用两个斜杠则匹配整个字符串中的全部出现。但是想要更多设置模式匹配的规则或次数就不行了。只能是要么处理第一次的匹配,要么处理所有的匹配。