Bash支持的一系列数字和字符串处理操作

Bash支持一系列令人吃惊的数字和字符串处理。不幸的是这些工具缺乏统一的焦点/目的,

它们有些是参数替换(parameter substitution)的子集,其他的属于UNIX命令expr的功能。

这种情况导致了命令语法的不一致/统一和 功能的重复实现,别提有多混乱了!

 

字符串长度(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

     匹配的第一个子串在主串中的位置,与C语言中的strchr()功能相似。

 

提取子串(Substring Extraction)

${string:position}

     提取$string中从$position开始到结尾的子串

     如果$string是”*”或”@”,则提取的是参数列表中$position开始到最后的所有参数

${string:position:length}

     提取从$position开始长度为$length的子串

     如果$string是”*”或”@”,则提取的是参数列表中$position开始的$length个参数

expr substr $string $position $length

    提取从$position开始长度为$length的子串

expr match "$string" '\($substring\)'    # $substring is a regular expression

expr "$string" : '\($substring\)'        # $substring is a regular expression

     提取匹配$substring的第一个子串

expr match "$string" '.*\($substring\)'    # $substring is a regular expression

expr "$string" : '.*\($substring\)'       # $substring is a regular expression

     提取匹配$substring的最后一个子串

 

删除子串(Substring Removal)

${string#substring}

     删除最前面匹配$substring的最短的子串

${string##substring}

     删除最前面匹配$substring的最长的子串

${string%substring}

     删除最后面匹配$substring的最短的子串

${string%%substring}

     删除最后面匹配$substring的最长的子串

 

替换子串(Substring Replacement)

${string/substring/replacement}

     把第一个匹配的$substring替换为$replacement

${string//substring/replacement}

     把所有匹配的$substring替换为$replacement

${string/#substring/replacement}

     如果主串开头匹配$substring则用$replacement替换它

${string/%substring/replacement}

     如果主串结尾匹配$substring则用$replacement替换它

 

源文档<http://bbs.chinaunix.net/thread-746472-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值