Chinaunix首页 | 论坛 | 博客
  • 博客访问: 238771
  • 博文数量: 68
  • 博客积分: 2802
  • 博客等级: 少校
  • 技术积分: 614
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-11 15:38
文章存档

2013年(3)

2012年(15)

2011年(21)

2010年(29)

我的朋友

分类: LINUX

2010-03-17 14:23:39

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'开始记录的.
阅读(594) | 评论(0) | 转发(0) |
0

上一篇:比较操作符

下一篇:参数替换

给主人留下些什么吧!~~