bash 字符串 处理

基本来自abs. 便于自己查阅.

字符串处理 bash
 
其实对于bash来说,最常用的变量基本就是字符串.即使是数字不也直接当作字符串操作.
 
字符串长度
${#string}
 
字符串中符合正则的子串长度
expr match "$string" '$substring'
expr "$string" : '$substring'
$ stringZ=abcABC123ABCabc
$ echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8
$ echo `expr "$stringZ" : 'abc[A-Z]*.2'`     # 8
 
substring中字符在string中首次出现位置(Numerical position in $string of first character in $substring that matches.)
expr index $string $substring
$ stringZ=abcABC123ABCabc
$ echo `expr index "$stringZ" C12` # 6
$ echo `expr index "$stringZ" 1c` # 3
 
提取子串(数字定位)
${string:position}
${string:position:length}
expr substr $string $position $length
$ stringZ=abcABC123ABCabc
$ echo ${stringZ:0}   # abcABC123ABCabc
$ echo ${stringZ:7}   # 23ABCabc
$ echo ${stringZ:7:3} # 23A
$ echo `expr substr $stringZ 1 2` # ab
$ echo `expr substr $stringZ 4 3` # ABC
 
提取子串(正则)
提取从源串头开始提取子串
expr match "$string" '\($substring\)'
expr "$string" : '\($substring\)'
从源串头后部提取子串(.*)
expr match "$string" '.*\($substring\)'
expr "$string" : '.*\($substring\)'
$ echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
$ echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1
$ echo `expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'` # ABCabc
 
删除子串  (难道是通配符!!!)  
${string#substring}     删除从左开始最短匹配字符串
${string##substring}    删除从左开始最长匹配字符串
${string%substring}     删除从右开始最短匹配字符串
${string%%substring}    删除从右开始最长匹配字符串
例程:
SUFF=TXT
suff=txt
for i in $(ls *.$SUFF)
do mv -f $i ${i%.$SUFF}.$suff ; done
 
子串替换
${string/substring/replacement}    替换第一个匹配
${string//substring/replacement}   替换所有匹配
${string/#substring/replacement}   替换string头部匹配
${string/%substring/replacement}   替换string尾部匹配   
$ match=abc
$ repl=000
$ echo ${stringZ/$match/$repl}  # 000ABC123ABCabc
$ echo ${stringZ//$match/$repl} # 000ABC123ABC000
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值