Bash字符串操作速查

1. 按子串分割截取

${varible#*string}               从左往右,删除最短的一个以string结尾的子串,即截取第一个string子串之后的字符串

${varible##*string}            从左往右,删除最长的一个以string结尾的子串,即截取最后一个string子串之后的字符串

${varible%string*}               从右往左,删除最短的一个以string开头的子串,即截取最后一个string子串之前的字符串

${varible%%string*}            从右往左,删除最长的一个以string开头的子串,即截取第一个string子串之前的字符串

例如:

export TEST=123abc456abc789

echo ${TEST#*abc}          ===>删掉123abc剩下456abc789

echo ${TEST##*abc}       ===>删掉123abc456abc剩下789

echo ${TEST%abc*}         ===>删掉abc789剩下123abc456

echo ${TEST%%abc*}      ===>删掉abc456abc789剩下123

2. 固定位置截取

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

例如:

export TEST=123abc456abc789

echo ${TEST:0:3}          ===>"123"

echo ${TEST:3:3}           ===>"abc"

似乎好像可能bash不能直接获取字符串的某一个个字符,所以如果要取某个字符,比如取第3个字符,就只能使用${TEST:2:1}。

3. 字符串替换

替换一个

echo ${TEST/abc/def}      ===>"123def456abc789"

替换所有

echo ${TEST//abc/def}    ===>"123def456def789"

4. 字符串求长度

echo ${#TEST}      ===>15

5. 字符串查找

从1开始计数,匹配开头时返回1,没查找到返回0

expr index $TEST '123'  ===>1

6. 大小写转换

转大写:echo ${s^^}

转小写:echo ${s,,}

7. 变量赋值

有则返回,无则取默认值:echo ${s:-haha}

有则返回,无则报错:echo ${s:?haha}

变量有定义,返回+号后的内容,无定义则忽略:echo ${s:+haha}

特别注意:echo ${s: -1}与echo ${s:-1}的差别,只是冒号后是否有空格之差,前者表示取s末尾子串,跟python里的s[-1:]概念一样,后者表示s没定义,就返回1。

8. 随机数生成

生成长度为4的随机数,因为RANDOM是0到32767,此处不足补零:num4=`echo ${RANDOM:0:4} | xargs printf '%.04d'`

发表于 2016年03月28日 15:57   评论:0   阅读:2249  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo