1.字元截斷:
如果是一般路徑的字元截斷可以用basename和dirname這兩個工具:
basename可以從乙個檔案路徑中截乙個檔名
例如:$ basename /home/file.tar
file.tar
dirname可以從乙個檔案路徑中截到乙個目錄路徑
例如:$ dirname /home/file.tar
/home
不使用外部工具進行字元截斷
bash有自帶的功能來對變數進行字元截斷,一般使用"##", "#", "%%", "%", "*" 組合來實現。例如:
$ string=hellowbashshell
$ echo $
ell$ echo $
shell
$ echo $
hellowba
$ echo $
hellowbash
"#"表示從字元開始部分除去,一旦匹配則立即除去
"##"表示從字元開始部分除去,會搜整個字串最長的和的匹配來除去
"%"表示從字元結束的部分除去,一旦匹配成公則立即除去
"%%"表示從字元結束的部分開始除去,會搜尋整個字元穿中最長的匹配來除去
"*"統配符,一般與「##」或"#"聯用時放在搜尋字串的左邊,例如:$(在sh的左邊),與"%%"或"%"聯用時會放在匹配字串的右邊,例如:$
常用技巧:
在路徑中取檔名:$(與basename相同功能)在路徑中取目錄路徑:$(與dirname相同功能)
取檔案的副檔名:$
假設有變數 var=
一 # 號擷取,刪除左邊字元,保留右邊字元。
echo $
其中 var 是變數名,# 號是運算子,*// 表示從左邊開始刪除第乙個 // 號及左邊的所有字元
即刪除 http://
結果是 :www.google.com/test.htm
二 ## 號擷取,刪除左邊字元,保留右邊字元。
echo $
##*/ 表示從左邊開始刪除最後(最右邊)乙個 / 號及左邊的所有字元
即刪除
結果是 test.htm
三 %號擷取,刪除右邊字元,保留左邊字元
echo $
%/* 表示從右邊開始,刪除第乙個 / 號及右邊的字元
結果是:
四 %% 號擷取,刪除右邊字元,保留左邊字元
echo $
%%/* 表示從右邊開始,刪除最後(最左邊)乙個 / 號及右邊的字元
結果是:http:
五 從左邊第幾個字元開始,及字元的個數
echo $
其中的 0 表示左邊第乙個字元開始,5 表示字元的總個數。
結果是:http:
六 從左邊第幾個字元開始,一直到結束。
echo $
其中的 7 表示左邊第8個字元開始,一直到結束。
結果是 :www.google.com/test.htm
七 從右邊第幾個字元開始,及字元的個數
echo $
其中的 0-7 表示右邊算起第七個字元開始,3 表示字元的個數。
結果是:test
八 從右邊第幾個字元開始,一直到結束。
echo $
表示從右邊第七個字元開始,一直到結束。
結果是:test.htm
注:(左邊的第乙個字元是用 0 表示,右邊的第乙個字元用 0-1 表示)
Bash Shell指令碼字串截斷
1.字元截斷 如果是一般路徑的字元截斷可以用basename和dirname這兩個工具 basename可以從乙個檔案路徑中截乙個檔名 例如 basename home file tar file tar dirname可以從乙個檔案路徑中截到乙個目錄路徑 例如 dirname home file ...
shell指令碼 字串
printf printf 10s 10s 10s n no name height printf 10s 10s 10d n 1 whr 187 2 wsl 198 字串切片 冒號後面一定要加空格 基於模式取子字串 從左至右 刪除pattern第一次匹配到的 刪除pattern最後一次匹配到的 從...
Shell指令碼 字串擷取
假設變數var值為 使用 與 或 的結合實現字串擷取 刪除變數var從左邊算起的最後乙個 字元及其左邊的內容,返回處理後的字串 echo 123.html 若在shell指令碼中,可將處理後的結果賦值給變數 刪除變數var從左邊算起第乙個 字元及其左邊的內容,返回處理後的字串 刪除變數var從右邊算...