Bash:字符串操作

参考:http://blog.csdn.net/finewings/article/details/5718133

字符串提取

去掉指定前缀

1. ${varible#pattern}               从头开始,左往右,删除最短的一个pattern结尾的字符串,即截取第一个pattern结尾子串之后的字符串

例如在集群中服务器的主机名一般都是node000,node001,node002之类的有时我们只想提取这个数字编码ID就可以像如下这样:

ubuntu@dev00:~$ hn=$(hostname)

ubuntu@dev00:~$ echo ${hn#dev}
00

当前机器名为dev00,当然还可以加入使用通配符,比如*

$ x="abcdefg"
$ echo ${x#*'cd'}
efg

连前面的ab都去掉了

2. ${varible##pattern}               从头开始,左往右,删除最长的一个以pattern结尾的子串,即截取最后一个以pattern结尾子串之后的字符串(类似正则里面的贪婪)

例子:将x=“009”~“019”这些字符提取为没有前导零的形式,由于x中可能有不定个零,可以以最后一个0为截断位置

ubuntu@dev00:~$ x='009'
ubuntu@dev00:~$ echo ${x##*0}
9

去除指定后缀

这个和‘去除指定前缀’几乎一样,就是方向变了一下,相应的表示的符号也换了一下:

1. ${variable%pattern}

2. ${variable%%pattern}

固定位置

${varible:start:len}              :截取变量varible从位置start开始长度为len的子串。第一个字符的位置为0。

这个和一般语言里的substr(index, len)一致,(hn=‘dev00’)

ubuntu@dev00:~$ echo ${hn:3:2}
原文地址:https://www.cnblogs.com/lailailai/p/4565621.html