本文首發於我的Github博客
本文記錄了作者使用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
開始的子串
> string="text, dummy, text, dummy"
> echo ${string:3}
t, dummy, text, dummy
使用string:position:length
提取從position
開始,長度爲length
的子串
> string="text, dummy, text, dummy"
> echo ${string:3:4}
t, d
前綴去除
使用string#pattern
進行最短匹配前綴去除
> string="text, dummy, text, dummy"
> echo ${string#*text}
, dummy, text, dummy
使用string##pattern
進行最長匹配前綴去除
> string="text, dummy, text, dummy"
> echo ${string##*text}
, dummy
後綴去除
使用string%pattern
進行最短匹配後綴去除
> string="text, dummy, text, dummy"
> echo ${string%dummy*}
text, dummy, text, y
使用string%%pattern
進行最長匹配後綴去除
> string="text, dummy, text, dummy"
> echo ${string%%dummy*}
text,
字符串替換
使用string/pattern/string
進行首個pattern
的替換
> string="text, dummy, text, dummy"
> echo ${string/text/TEXT}
TEXT, dummy, text, dummy
使用string//pattern/string
進行全部pattern
的替換
> string="text, dummy, text, dummy"
> echo ${string//text/TEXT}
TEXT, dummy, TEXT, dummy
想要得到對正則表達式匹配替換的支持的話,可以使用sed命令