linux字串的處理

2021-06-22 14:41:05 字數 2857 閱讀 8355

1.計算字串的長度

$和expr length string

example

$ string="i love you"

$ echo "$"

10$ expr length $string       (string 中含有空格會出現錯誤)

expr: syntax error

$ expr length "$"

102.字串的索引

expr index $string $substring

命令的功能是在$string匹配$substring中字元第一次出現的位置

(我的理解是不是整體匹配$substring中的內容,而是乙個字元乙個字元的匹配,返回最小的index,沒有的話,則返回0)

example

$ string="i love you"

$ substring="love"

$ expr index "$string" $

3expr index "$string" ol     (返回的是l的index)

33.字串的開頭匹配

expr match $string $substring

在string字串的開頭匹配substring字串,返回匹配到的substring字串的長度,若string開頭匹配不到,返回0。substring 可以是正則式

example

$ string="i love you"

$ expr match "$string" o

0$ expr match "$string" "i.\"

10$ expr match "$string" i.*

104.抽取子串

$  從string左邊中position的位置開始抽取,string從第乙個字元的位置為0。

$ == $

從string右邊(尾部)抽取position個字元,兩者等價,前條命令冒號和橫線之間有空格

$從string左邊中position的位置開始抽取length個字元。

expr  substr $string $position $length

從string中position位置抽取長度為length的串,string的position從1開始,與上面講的position位置從0開始有區別。

example

$ string="i love you"

$ echo "$"

i love you

$ echo "$"

i love

$ echo "$"      (:和-之間有空格)

ve you

$ echo "$"       (:和-之間沒有空格)

i love you

$ expr substr "$string" 1 9

i love yo

$ expr substr "$string" 0 9

從0的話輸出為空

上述只是簡單的抽取子串,但是有時候不知到開始的字元或者結尾的字元有多長,所以需要正規表示式來 抽取開始或者的結尾的子串。

抽取開頭

expr match $string '\(substring\)' 或者 expr $string : '\(substring\)'

expr match 返回的是長度,上面返回的是字串,猜測與"\(\)"有關係。

$ string="family is very important"

$ expr match "$string" '\([a-z]*\)'

family

$ expr "$string" : "\([a-z]*\)"

family

抽取結尾

expr match $string '.*\(substring\)' 或者 expr $string : '.*\(substring\)'

與抽取開頭相比只是多了 .*

$ expr match "$string" '.*\([a-z]\\)'

important

5.刪除子串

$  刪除string匹配開頭處與substring匹配最短

$   刪除string匹配開頭處與substring匹配最長

$   刪除string結尾處匹配與substring匹配最短

$   刪除string結尾處匹配與substring匹配最長

substring並不是正規表示式,*只是有特殊含義表示起始符和終止符之間的任意字元。

$ string="familyyyy is very important"

$ echo $

yyy is very important

$ echo $

important

$ echo $

familyyyy is very im

6.替換子串

$      僅替換第一次與substring相匹配的子串

$     替換所有與substring相匹配的子串

$    從string開頭處與substring相匹配的替換

$    從string結尾處與substring相匹配的替換

substring並不是正規表示式,*只是有特殊含義表示起始符和終止符之間的任意字元。

$ string="20111asdfg30111"

$ echo "$"

202222asdfg30111

$ echo "$"

202222asdfg302222

Linux內建字串處理

一 字串條件判斷 簡單表示式 解釋 例項 left left 變數right 的值,與 right 相同 right a left echo a left 如果right 沒有被宣告 那麼就以 defaultstring 作為left 的值,否則left right left echo left r...

Linux內建字串處理

一 字串條件判斷 簡單表示式 解釋 例項 left left 變數right 的值,與 right 相同 right a left echo a left 如果right 沒有被宣告 那麼就以 defaultstring 作為left 的值,否則left right left echo left r...

Linux內建字串處理

一 字串條件判斷 簡單表示式 解釋 例項 left left 變數right 的值,與 right 相同right a left echo aleft 如果right 沒有被宣告 那麼就以 defaultstring 作為left 的值,否則left right left echo left rig...