shell 字符串操作
时间:2010-12-02 来源:syukayo
<一> 字符串匹配,提取
字符串长度
${#string}
expr length $string
expr "$string" : '.*'
匹配字符串开头的子串长度
expr match "$string" '$substring'
$substring is a regular expression
expr "$string" : '$substring'
str=abcdABCD1234dcba |
索引
expr index $string $substring
str=abcdABCD1234dcba |
提取子串
${string:position} 在$string中从位置$position开始提取子串.
${string:position:length} 在$string中从位置$position开始提取$length长度的子串
str=abcABC123 |
如果string 是"*"或"@", 将提取位置参数
echo ${*:2} #第2个和后边的所有位置参数
expr substr $string $position $length
在$string中从$position开始提取$length长度的子串.position从1开始计数,非0.
str=abcdefg
echo `expr substr $str 2 3` # bcd
expr match "$string" '\($substring\)' 从$string的开始位置提取$substring(re).
expr "$string" : '\($substring\)'
str=abcABC123ABCabc |
expr match "$string" '.*\($substring\)' 从$string结尾提取$substring(re).
expr "$string" : '.*\($substring\)'
echo `expr "$string" : '.*\(......\)'` 从string结尾提取6个字符
<字符串子串削除>
${string#substring} 从string的开头位置截掉最短匹配的$substring.
${string##substring} 截掉最长匹配的substring.
str=abcABC123ABCabc
echo ${str#a*C} # 123ABCabc
echo ${str##a*C} # abc
${string%substring} 从string的结尾位置截掉最短匹配的$substring.
${string%%substring} 截掉最长匹配的substring.
str=abcABC123ABCabc
echo ${str%b*c} # abcABC123ABCa
echo ${str%%b*c} # a
<子串替换>
${string/substring/replacement}
使用$replacement来替换第一个匹配的$substring.
${string//substring/replacement}
使用$replacement来替换所有匹配的$substring.
str=abcABC123ABCabc |
${string/#substring/replacement}
如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.
${string/%substring/replacement}
如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.
str=abcABC123ABCabc |