$
從頭開始,將匹配到的最短子串刪除 (第乙個匹配到的子串刪除)刪除第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 表示從右邊開始,...