Bash Shell指令碼字串截斷

2021-06-20 14:07:48 字數 1859 閱讀 2801

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從右邊算...