得到長(zhǎng)度
- %x="abcd"
- #方法一
- %expr length $x
- 4
- # 方法二
- %echo ${#x}
- 4
- # 方法三
- %expr "$x" : ".*"
- 4
- # expr 的幫助
- # STRING : REGEXP anchored pattern match of REGEXP in STRING
復(fù)制代碼
查找子串
- %expr index $x "b"
- 2
- %expr index $x "a"
- 1
- %expr index $x "b"
- 2
- %expr index $x "c"
- 3
- %expr index $x "d"
- 4
復(fù)制代碼
得到子字符串
- # 方法一
- # expr <string> startpos length
- %expr substr "$x" 1 3
- abc
- %expr substr "$x" 1 5
- abcd
- %expr substr "$x" 2 5
- bcd
- # 方法二
- # ${x:pos:lenght}
- %echo ${x:1}
- bcd
- %echo ${x:2}
- cd
- %echo ${x:0}
- abcd
- %echo ${x:0:2}
- ab
- %pos=1
- %len=2
- %echo ${x:$pos:$len}
- bc
復(fù)制代碼
匹配正則表達(dá)式
- # 打印匹配長(zhǎng)度
- %expr match $x "."
- 1
- %expr match $x "abc"
- 3
- %expr match $x "bc"
- 0
復(fù)制代碼
字符串的掐頭去尾
- %x=aabbaarealwwvvww
- %echo "${x%w*w}"
- aabbaarealwwvv
- %echo "${x%%w*w}"
- aabbaareal
- %echo "${x##a*a}"
- lwwvvww
- %echo "${x#a*a}"
- bbaarealwwvvww
復(fù)制代碼
其中 , # 表示掐頭, 因?yàn)殒I盤(pán)上 # 在 $ 的左面。
其中 , % 表示%, 因?yàn)殒I盤(pán)上 % 在 $ 的右面。
單個(gè)的表示最小匹配,雙個(gè)表示最大匹配。
也就是說(shuō),當(dāng)匹配的有多種方案的時(shí)候,選擇匹配的最大長(zhǎng)度還是最小長(zhǎng)度。
字符串的替換
- %x=abcdabcd
- %echo ${x/a/b} # 只替換一個(gè)
- bbcdabcd
- %echo ${x//a/b} # 替換所有
- bbcdbbcd
復(fù)制代碼
不可以使用 regexp , 只能用 * ? 的文件擴(kuò)展方式。