shell 字串擷取與變數內容替換

2021-10-24 09:01:30 字數 2545 閱讀 7617

$

從頭開始,將匹配到的最短子串刪除 (第乙個匹配到的子串刪除)刪除第1個分隔符及其之前的內容

$從頭開始,將匹配到的最長子串刪除     刪除最後1個分隔符及其之前的內容

$從尾開始,將匹配到的最短子串刪除

$從尾開始,將匹配到的最長子串刪除

$替換掉第乙個匹配到的舊字串

$替換掉所有匹配到的舊字串

待處理表量:   aa='/aa/bb/aa/cc'

# 從前往後找到/後第乙個/,/及其前面的字元全部刪除

echo $ # 最後乙個/是分隔符,第乙個/代表從其開始,萬用字元*代表0到無窮多個任意字元

# bb/aa/cc

# 從前往後找到/後最後乙個/,/及其前面的字元全部刪除

echo $

# cc

# 從後往前找到第乙個/,/及其後面的字元全部刪除

echo $

# /aa/bb/aa

# 從後往前找到最後乙個/,/及其後面的字元全部刪除

echo $

# 空# 從前往後將第乙個aa替換成aa

echo $

# /aa/bb/aa/cc

# 從前往後將全部aa替換成aa

echo $

# /aa/bb/aa/cc

待處理字串:   aa=''

2.1 # 號擷取,刪除左邊字元,保留右邊字元。

其中 aa 是變數名,# 號是運算子,*// 表示從左邊開始刪除第乙個 // 號及左邊的所有字元

2.2 ## 號擷取,刪除左邊字元,保留右邊字元。

echo $

123.htm

##*/ 表示從左邊開始刪除最後(最右邊)乙個 / 號及左邊的所有字元

2.3 %號擷取,刪除右邊字元,保留左邊字元

echo $

/123.htm

%/* 表示從右邊開始,刪除第乙個 / 號及右邊的字元

2.4 %% 號擷取,刪除右邊字元,保留左邊字元

%%/* 表示從右邊開始,刪除最後(最左邊)乙個 / 號及右邊的字元

2.5 從左邊第幾個字元開始,指定長度後的刪除

其中的 0 表示左邊第乙個字元開始,5 表示字元的總個數。

2.6 從左邊第幾個字元開始,一直到結束。

其中的 7 表示左邊第8個字元開始,一直到結束保留。

2.7 從右邊第幾個字元開始,及字元的個數

echo $

其中的 0-7 表示右邊算起第七個字元開始,長度為3的子串保留。

結果是:123

2.8 從右邊第幾個字元開始,一直到結束。

echo $

表示從右邊第七個字元開始,一直到結束。

注:(左邊的第乙個字元是用 0 表示,右邊的第乙個字元用 0-1 表示)

str: 代表str沒設定或為空字串;str僅表示沒有該錶量

變數設定方式

str沒有設定

str為空字串

str已設定且非空字串

var=$

var=expr

var=

var=$str

var=$

var=expr

var=expr

var=$str

var=$

var=

var=expr

var=expr

var=$

var=

var=

var=expr

var=$

str=expr     var=expr

str=不變     var=

str=不變     var=$str

var=$

str=expr     var=expr

str=expr     var=expr

str=不變     var=$str

var=$

expr輸出至stderr

var=

var=str

var=$

expr輸出至stderr

expr輸出至stderr

var=str

例項

# 若變數aa不存在,則返回「11」

aa=$

# 變數aa不存在或為空字串,均返回「11」

aa=$

Shell字串擷取

一 linux shell 擷取字元變數的前8位,有方法如下 substr var 開始擷取位 擷取長度 1.expr substr a 1 8 2.echo a awk 3.echo a cut c1 8 4.echo 5.expr a 6.echo a dd bs 1 count 8 2 dev...

shell字串擷取

filed under shell shell字串的擷取的問題 一 linux shell 擷取字元變數的前8位,有方法如下 1.expr substr a 1 8 2.echo a awk 3.echo a cut c1 8 4.echo 5.expr a 6.echo a dd bs 1 cou...

shell字串擷取

假設有變數 var echo 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.aaa.com 123.htmecho 表示從左邊開始刪除最後 最右邊 乙個 號及左邊的所有字元 即刪除 結果是 123.htmecho 表示從右邊開始,...