1)字符串长度
1.${#string}
2.expr length $string
3.expr "$string" : '.*'
注:string为要操作的字符串(变量)
2)从字符串开始的位置匹配子串的长度
expr match "$string" '$substring'
$substring 是一个正则表达式
expr "$string" : '$substring'
$substring 是一个正则表达式
3)索引
expr index $string $substring
匹配到子串的第一个字符的位置.注:输出匹配的位置。
4)提取子串
${string:position}
在 string 中从位置$position 开始提取子串,如位置1,2等。如果$string 为"*"或"@",那么将提取从位置$position 开始的位置参数,
{string:position:length}
在 string 中从位置$position 开始提取$length 长度的子串.
注意:以${parameter:-default}方式,默认是提取完整地字符串,default为任意位置。然而使用圆括号或者添加一个空格来转义这个位置参数,如${parameter:(-default)}或${parameter: -default}则从字符结尾开始,反向提取子串。
如果$string 参数为"*"或"@",那将最大的提取从$position 开始的$length 个位置参数。
expr substr $string $position $length
在 string 中从位置$position 开始提取$length 长度的子串
expr match "$string" '\($substring\)'
从$string 的开始位置提取$substring,$substring 是一个正则表达式.
expr "$string" : '\($substring\)'
从$string 的开始位置提取$substring,$substring 是一个正则表达式.
5)子串削除
${string#substring}
从$string 的左边截掉第一个匹配的$substring
${string##substring}
从$string 的左边截掉最后一个个匹配的$substring
${string%substring}
从$string 的右边截掉第一个匹配的$substring
${string%%substring}
从$string 的右边截掉最后一个匹配的$substring
6)子串替换
${string/substring/replacement}
使用$replacement 来替换第一个匹配的$substring.
${string//substring/replacement}
使用$replacement 来替换所有匹配的$substring.
${string/#substring/replacement}
如果$substring 匹配$string 的开头部分,那么就用$replacement 来替换$substring.
${string/%substring/replacement}
如果$substring 匹配$string 的结尾部分,那么就用$replacement 来替换$substring
7)使用 awk 来操作字符串
echo ${String:2:4} # 位置 3 (0-1-2), 4 个字符长.awk 中等价于${string:pos:length}的命令是 substr(string,pos,length).
echo | awk '{ print substr("'"${String}"'",3,4)} ’
注意,对于 awk 和 Bash 来说,它们使用的是不同的 string 索引系统:
Bash 的第一个字符是从'0'开始记录的.
Awk 的第一个字符是从'1'开始记录的.
阅读(630) | 评论(0) | 转发(0) |