bash中的字符串處理操作

本文首發於我的Github博客
本文記錄了作者使用bash過程中,爲了解決去除前綴後綴的問題而瞭解到的bash的字符串操作,簡單來說

  1. string:position或者string:position:length進行子串提取
  2. string#pattern進行最短匹配前綴去除,string##pattern進行最長匹配前綴去除
  3. string%pattern進行最短匹配後綴去除,string%%pattern進行最長匹配後綴去除
  4. string/pattern/string進行首個pattern替換,string//pattern/string進行全部pattern替換
  5. 以上的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命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章