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...