SHELL(4)-字符串处理
1、字符串拼接;
]# a="abd" ]# b=456 ]# echo $a$b abd456
2、字符串切片;
${string:offset:length} ]# string='hello word' ]# echo ${string:2:4} llo
3、截取尾部指定个数字符;
${string: -length} [root@scholar scripts]# echo ${string: -2} rdz
注意:echo ${string: -2}冒号后面有空格;
4、取子串:基于模式;
${variable#*word}:在variable中存储字串上,自左而右,查找第一次出现word,删除字符开始至此word处的所有内容;
]# echo $str my name wang ]# echo ${str#*na} me wang
${variable##*word}:在variable中存储字串上,自左而右,查找最后一次出现word,删除字符开始至此word处的所有内容;
file='/var/log/messages' ${file#*/}: 返回的结果是var/log/messages ${file##*/}: 返回messages
${variable%word*}: 在variable中存储字串上,自右而左,查找第一次出现word,删除此word处至字串尾部的所有内容;
${variable%%world*}:在variable中存储字串上,自右而左,查找最后一次出现word,删除此word处至字串尾部的所有内容;
file='/var/log/messages' ${file%*/}: 返回的结果是/var/log ${file%%*/}: 返回结果为空
例:url="http://www.redhat.com:80"
取端口:${url##*:}
取协议:${url%%:*}
5、查找替换;
${variable/pattern/substi}: 替换第一次出现;
#userinfo=`tail -1 /etc/passwd #echo $userinfo scholar:x:500:500:scholar:/home/scholar:/bin/bash #echo ${userinfo/scholar/redhat} redhat:x:500:500:scholar:/home/scholar:/bin/bash
${variable//pattern/substi}:替换所有的出现;
#echo ${userinfo//scholar/redhat} redhat:x:500:500:redhat:/home/redhat:/bin/bash
${variable/#pattern/substi}:替换行首被pattern匹配到的内容
#echo ${userinfo/#scholar/redhat} redhat:x:500:500:scholar:/home/scholar:/bin/bash
${variable/%pattern/substi}:替换行尾被pattern匹配到的内容;
#echo ${userinfo/%bash/redhat} scholar:x:500:500:scholar:/home/scholar:/bin/redhat pattern可以使用globbing中的元字符:* ?
6、查找删除;
${variable/pattern}:删除第一次出现;
#echo ${userinfo/scholar} :x:500:500:scholar:/home/scholar:/bin/bash
${variable//pattern}:删除所有的出现;
#echo ${userinfo//scholar} :x:500:500::/home/:/bin/bash
${variable/#pattern}:删除行首被pattern匹配到的内容;
#echo ${userinfo/#scholar} :x:500:500:scholar:/home/scholar:/bin/bash
${variable/%pattern}:删除行尾被pattern匹配到的内容;
#echo ${userinfo/%bash} scholar:x:500:500:scholar:/home/scholar:/bin/
7、大小写转换;
小–>大:${variable^^}
小–>大:${variable^^} #echo ${userinfo^^} SCHOLAR:X:500:500:SCHOLAR:/HOME/SCHOLAR:/BIN/BASH
大–>小:${variable,,}
#name="SCHOLAR" #echo ${name,,} scholar