Shell字符串截取(非常詳細)


 假設有變量 var=http://www.aaa.com/123.htm.

1. # 號截取,刪除左邊字符,保留右邊字符。

1
echo ${var#* //}

 其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符
即刪除 http://
結果是 :www.aaa.com/123.htm

2. ## 號截取,刪除左邊字符,保留右邊字符。

1
echo ${var##*/}

 

##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符
即刪除 http://www.aaa.com/

結果是 123.htm

3. %號截取,刪除右邊字符,保留左邊字符

1
echo ${var%/*}

 

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

結果是:http://www.aaa.com

4. %% 號截取,刪除右邊字符,保留左邊字符

1
echo ${var%%/*}

 %%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符
結果是:http:

5. 從左邊第幾個字符開始,及字符的個數

1
echo ${var: 0 : 5 }

 

其中的 0 表示左邊第一個字符開始,5 表示字符的總個數。
結果是:http:

6. 從左邊第幾個字符開始,一直到結束。

1
echo ${var: 7 }

 

其中的 7 表示左邊第8個字符開始,一直到結束。
結果是 :www.aaa.com/123.htm

7. 從右邊第幾個字符開始,及字符的個數

1
echo ${var: 0 - 7 : 3 }

 

其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數。
結果是:123

8. 從右邊第幾個字符開始,一直到結束。

1
echo ${var: 0 - 7 }

 

表示從右邊第七個字符開始,一直到結束。
結果是:123.htm

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

匯總

最后,我們對以上 8 種格式做一個匯總,請看下表:

格式 說明
${string: start :length} 從 string 字符串的左邊第 start 個字符開始,向右截取 length 個字符。
${string: start} 從 string 字符串的左邊第 start 個字符開始截取,直到最后。
${string: 0-start :length} 從 string 字符串的右邊第 start 個字符開始,向右截取 length 個字符。
${string: 0-start} 從 string 字符串的右邊第 start 個字符開始截取,直到最后。
${string#*chars} 從 string 字符串第一次出現 *chars 的位置開始,截取 *chars 右邊的所有字符。
${string##*chars} 從 string 字符串最后一次出現 *chars 的位置開始,截取 *chars 右邊的所有字符。
${string%chars*} 從 string 字符串第一次出現 *chars 的位置開始,截取 *chars 左邊的所有字符。
${string%%chars*} 從 string 字符串最后一次出現 *chars 的位置開始,截取 *chars 左邊的所有字符。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM