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

  

 

posted @   青灯浊酒  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示