linux shell 字符串獲取長度、替換、截取、刪除等操作(持續更新)

測試字符串:str=/xxx/file.txt.gz

一、長度、變量:

說明

表達式

例子

結果

獲取長度

${#string}

${#str}

16

列出所有以prefix開頭的變量

${!prefix*}、${!prefix@}

${!st@}

str

測試${!prefix*}、${!prefix@}沒什麼區別,如果大神知道區別,留言,膜拜!
str111=/xxx/file.txt.gz
str222=/xxx/file.txt.gz

echo ${!str@} #結果:str111 str222
echo ${!str*} #結果:str111 str222

二、截取、刪除

說明

表達式

例子

結果

從position(從0開始,負表示倒數,下同)開始截取

${string:position}

${str:1}

xxx/file.txt.gz

position開始截取,取length長

${string:position:length}

${str:1:3}

xxx

從第index(從1開始)開始,取number個

`expr substr $string index number`

`expr substr $str 2 3`

xxx

從左邊開始,刪最短匹配regex

${string#regex }

${str#*.}

txt.gz

從左邊開始,刪最長匹配regex

${string##regex }

${str##*.}

gz

從右邊開始,刪最長匹配regex

${string%%regex }

${str%%.*}

/xxx/file

從右邊開始,刪最短匹配regex

${string%regex }

${str%.*}

/xxx/file.txt

刪除操作很有用:比如取目錄、文件名、後綴等

dir=${str%/*} 在絕對路徑str取目錄

filename=${str##*/}  取文件名

suffix=${str##*.} 取後綴

很方便、很簡潔,有木有~~~~

三、匹配

說明

表達式

例子

結果

從頭匹配substring

`expr match $string '\(substring\)'`

`expr match $str '\(/xx\)'`

/xx

隨便位置匹配substring

`expr match $string '.*\(substring/\)'`

`expr match $str '.*\(xx/\)'`

xx/

從頭匹配substring,輸出匹配數量

`expr match $string 'substring'`

`expr match $str '/xx'`

3

隨便位置匹配substring,輸出匹配數量

`expr match $ string '.* 'substring''`

`expr match $str '.*xx/'`

5

四、替換

說明

表達式

例子

結果

在string中,用newsubstr替換oldsubstr一次

${string/oldsubstr/newsubstr}

${str/./-}

/xxx/file-txt.gz

在string中,用newsubstr替換所有oldsubstr

${string//oldsubstr/newsubstr}

${str//./-}

/xxx/file-txt-gz

在string中,以oldsubstr開頭部分被newsubstr替換

${string/#oldsubstr/newsubstr}

${str/#\/x/y}

yxx/file.txt.gz

在string中,以oldsubstr結尾部分被newsubstr替換

${string/%oldsubstr/newsubstr}

${str/%gz/tar}

/xxx/file.txt.tar


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