SHELL(4)-字符串处理
1、字符串拼接;
1 2 3 4 | ] # a="abd" ] # b=456 ] # echo $a$b abd456 |
2、字符串切片;
1 2 3 4 | ${string:offset:length} ] # string='hello word' ] # echo ${string:2:4} llo |
3、截取尾部指定个数字符;
1 2 3 | ${string: -length} [root@scholar scripts] # echo ${string: -2} rdz |
注意:echo ${string: -2}冒号后面有空格;
4、取子串:基于模式;
${variable#*word}:在variable中存储字串上,自左而右,查找第一次出现word,删除字符开始至此word处的所有内容;
1 2 3 4 | ] # echo $str my name wang ] # echo ${str#*na} me wang |
${variable##*word}:在variable中存储字串上,自左而右,查找最后一次出现word,删除字符开始至此word处的所有内容;
1 2 3 | file = '/var/log/messages' ${ file #*/}: 返回的结果是var/log/messages ${ file ##*/}: 返回messages |
${variable%word*}: 在variable中存储字串上,自右而左,查找第一次出现word,删除此word处至字串尾部的所有内容;
${variable%%world*}:在variable中存储字串上,自右而左,查找最后一次出现word,删除此word处至字串尾部的所有内容;
1 2 3 | file = '/var/log/messages' ${ file %*/}: 返回的结果是 /var/log ${ file %%*/}: 返回结果为空 |
例:url="http://www.redhat.com:80"
取端口:${url##*:}
取协议:${url%%:*}
5、查找替换;
${variable/pattern/substi}: 替换第一次出现;
1 2 3 4 5 | #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}:替换所有的出现;
1 2 | #echo ${userinfo//scholar/redhat} redhat:x:500:500:redhat: /home/redhat : /bin/bash |
${variable/#pattern/substi}:替换行首被pattern匹配到的内容
1 2 | #echo ${userinfo/#scholar/redhat} redhat:x:500:500:scholar: /home/scholar : /bin/bash |
${variable/%pattern/substi}:替换行尾被pattern匹配到的内容;
1 2 3 | #echo ${userinfo/%bash/redhat} scholar:x:500:500:scholar: /home/scholar : /bin/redhat pattern可以使用globbing中的元字符:* ? |
6、查找删除;
${variable/pattern}:删除第一次出现;
1 2 | #echo ${userinfo/scholar} :x:500:500:scholar: /home/scholar : /bin/bash |
${variable//pattern}:删除所有的出现;
1 2 | #echo ${userinfo//scholar} :x:500:500:: /home/ : /bin/bash |
${variable/#pattern}:删除行首被pattern匹配到的内容;
1 2 | #echo ${userinfo/#scholar} :x:500:500:scholar: /home/scholar : /bin/bash |
${variable/%pattern}:删除行尾被pattern匹配到的内容;
1 2 | #echo ${userinfo/%bash} scholar:x:500:500:scholar: /home/scholar : /bin/ |
7、大小写转换;
小–>大:${variable^^}
1 2 3 | 小–>大:${variable^^} #echo ${userinfo^^} SCHOLAR:X:500:500:SCHOLAR: /HOME/SCHOLAR : /BIN/BASH |
大–>小:${variable,,}
1 2 3 | #name="SCHOLAR" #echo ${name,,} scholar |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」