Ronan Blog

罗华东的博客 | 向前每多走一步,热爱和勇气就会多一分。

shell 文本、字符串处理

2024-09-02 1 min read Linux Ronan

1、字符串切片

${变量:偏移量:截取长度}

--------------------------example
[192.168.2.230] - root@ubuntu20.04.5-template:/ root
$ MYPATH=' /usr/bin/wget'

[192.168.2.230] - root@ubuntu20.04.5-template:/root
$ echo ${MYPATH: 4:4}
/bin     			  #其会左向右从第四位向后取四位(字符串第一位为0)

[192.168.2.230] - root@ubuntu20.04.5-template:/ root
$ echo ${MYPATH: -4}  #这会右向左从末尾向前取四位,「-4和冒号之间要有一个空格」

2、基于模式取子串

${var#*word} 其中word可以是指定的任意字符,自左而右,删除字符串开头至第一次出现word字符之间的所有字符。

${var##*word}
其中word可以是指定的任意字符,自左而右,删除字符串开头至最后一次出现word字符之间的所有字符。

${var%sword*}
其中word可以是指定的任意字符,自右而左,删除字符串尾部至第一次出现word字符之间的所有字符。

${var%%sword*}
其中word可以是指定的任意字符,自右而左,删除字符串尾部至最后一次出现word字符之间的所有字符

3、查找删除

${var/匹配文本}
删除第一次匹配到的内容

${var//pattern}
删除所有匹配到的内容

${var/#pattern}
删除行首匹配到的内容

${var/%pattern}
删除行尾匹配到的内容

4、查找替换

${var/匹配文本/替换文本}
替换第一次匹配到的内容

${var//匹配文本/替换文本}
替换所有匹配到的内容

${var/#匹配文本/替换文本}
行首匹配时替换行首

${var/%匹配文本/替换文本}
行尾匹配时替换行尾