本文记录了作者使用bash过程中,为了解决去除前缀后缀的问题而了解到的bash的字符串操作,简单来说
string:position或者string:position:length进行子串提取string#pattern进行最短匹配前缀去除,string##pattern进行最长匹配前缀去除string%pattern进行最短匹配后缀去除,string%%pattern进行最长匹配后缀去除string/pattern/string进行首个pattern替换,string//pattern/string进行全部pattern替换- 以上的
pattern指的都是wildcard而不是regular expression
场景
有时在使用bash脚本的时候,希望对字符串做一些基本的操作,比如说去除前缀后缀(去除文件扩展名,统一前缀编号等),事实上,bash原生支持了许多字符串操作
bash 中的字符串操作
下面所有的pattern指的都是bash wildcard而不是regular expression
子串提取
使用string:position提取从position开始的子串
1 | > string="text, dummy, text, dummy" |
使用string:position:length提取从position开始,长度为length的子串
1 | > string="text, dummy, text, dummy" |
前缀去除
使用string#pattern进行最短匹配前缀去除
1 | > string="text, dummy, text, dummy" |
使用string##pattern进行最长匹配前缀去除
1 | > string="text, dummy, text, dummy" |
后缀去除
使用string%pattern进行最短匹配后缀去除
1 | > string="text, dummy, text, dummy" |
使用string%%pattern进行最长匹配后缀去除
1 | > string="text, dummy, text, dummy" |
字符串替换
使用string/pattern/string进行首个pattern的替换
1 | > string="text, dummy, text, dummy" |
使用string//pattern/string进行全部pattern的替换
1 | > string="text, dummy, text, dummy" |
想要得到对正则表达式匹配替换的支持的话,可以使用sed命令