1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| str="abcdef"
expr length $str # 4
echo ${#str} #获取字符串长度 4
## 获取子串index
expr index $str "b" # 2
echo ${str:2:3} #从第二个位置开始提取3个字符, bcd
## 左边截取掉最短的匹配
str="abbc,def,ghi,abcjkl"
echo ${str#a*c} # #从左边截取掉最短的匹配, 输出: ,def,ghi,abcjkl
echo ${str##a*c} # ##从左边截取掉最长的匹配, 输出:jkl
echo ${str#"a*c"} # 输出abbc,def,ghi,abcjkl 因为str中没有"a*c"子串
echo ${str##"a*c"} # 输出abbc,def,ghi,abcjkl 同理
echo ${str#*a*c*} # 空
echo ${str##*a*c*} # 空
echo ${str#d*f} # 输出abbc,def,ghi,abcjkl,
echo ${str#*d*f} # 输出,ghi,abcjkl
## 从右边截取最短的匹配
echo ${str%a*l} # %表示从右边截取最短的匹配, abbc,def,ghi
echo ${str%%b*l} # %%)表示从右边截取最长的匹配, a
echo ${str%a*c} # abbc,def,ghi,abcjkl
## 子串替换
str="apple, tree, apple tree"
echo ${str/apple/APPLE} #/替换第一次出现的apple, APPLE, tree, apple tree
echo ${str//apple/APPLE} #//替换所有apple, APPLE, tree, APPLE tree
echo ${str/#apple/APPLE} #/#开头匹配替换, APPLE, tree, apple tree
echo ${str/%apple/APPLE} #%末尾匹配替换, 如果字符串str以apple结尾,则用APPLE替换它
|