字符串处理,
分享于 点击 13395 次 点评:90
字符串处理,
字符串长度(String Length)
${#string}
expr length $string
expr "$string" : '.*'
匹配的最小子串的长度(Length of Matching Substring at Beginning of String)
expr match "$string" '$substring' # $substring is a regular expression
expr "$string" : '$substring' # $substring is a regular expression
索引(Index)
expr index $string $substring # 匹配的第一个子串在主串中的位置,String.indexOf(substring)
提取子串(Substring Extraction), $string是”*”或”@”,则表示参数列表
${string:position} # String.substring(position)
${string:position:length} # String.substring(position, position+length)
expr substr $string $position $length # String.substring(position-1, position+length-1)
# ugly, messy, get out, scram!
expr match "$string" '\($substring\)' # matched substring at beginning of string
expr "$string" : '\($substring\)' # matched substring at beginning of string
expr match "$string" '.*\($substring\)' # matched substring at ending of string
expr "$string" : '.*\($substring\)' # matched substring at ending of string
eg: stringZ="abc123ABC987"
expr match $stringZ '[a-z]*' # 3
expr match $stringZ '\([a-z]*\)' # abc
expr $stringZ : '[a-z0-9]*' # 6
expr $stringZ : '\([a-z0-9]*\)' # abc123
expr match $stringZ '.*\([A-Z]\+\)' # C
expr $stringZ : '.*\([0-9]\{2\}\)' # 87
删除子串(Substring Removal)
${string#substring} # 删除最前面匹配$substring的最短的子串
${string##substring} # 删除最前面匹配$substring的最长的子串
${string%substring} # 删除最后面匹配$substring的最短的子串
${string%%substring} # 删除最后面匹配$substring的最长的子串
- # 掐头,键盘上 # 在 $ 左面
- % 掐尾,键盘上 % 在 $ 右面
- 单个最小匹配,两个最大匹配
eg: stringZ="abc123ABC987CBA321cba"
echo ${stringZ#a*C} # 987CBA321cba
echo ${stringZ##a*C} # BA321cba
echo ${stringZ%C*a} # abc123ABC987
echo ${stringZ%%C*a} # abc123AB
替换子串(Substring Replacement)
${string/substring/replacement} # 把第一个匹配的$substring替换为$replacement
${string//substring/replacement} # 把所有匹配的$substring替换为$replacement
${string/#substring/replacement} # 如果主串开头匹配$substring则用$replacement替换它
${string/%substring/replacement} # 如果主串结尾匹配$substring则用$replacement替换它
eg: stringZ="abc123ABC987CBA321cba"
echo ${stringZ/a/z} # zbc123ABC987CBA321cba
echo ${stringZ//B/_} # abc123A_C987C_A321cba
echo ${stringZ/#abc/xyz} # xyz123ABC987CBA321cba
echo ${stringZ/%321[a-c]*/x} # abc123ABC987CBAx
参数扩展:
${parameter-default} # parameter没声明, 使用default
${parameter:-default} # parameter没设置, 使用default
${parameter=default} # parameter没声明, 把设为default
${parameter:=default} # parameter没设置, 把它为default
${parameter+alt_value} # parameter已声明, 使用alt_value, 否则使用null字符串.
${parameter:+alt_value} # parameter已设置,使用alt_value, 否则使用null字符串.
eg:
echo ${username} # null
echo ${username-`whoami`} # root
username=
echo ${username-`whoami`} # null
echo ${username:-`whoami`} # root
unset username
echo ${username=eli} # eli
echo $username # eli
username=
echo ${username=eli} # null
echo ${username:=eli} # eli
echo $username # eli
unset username
echo ${username+nana} # null
username=
echo ${username+jack} # jack
echo ${username:+jack} # null
username=micheal
echo ${username+jack} # jack
echo ${username:+jack} # jack
相关文章
- 暂无相关文章
用户点评