字符串切片操作
shell字符串切片操作與數據組元素字符切片操作基本相同,在shell中處理字符串要注意以下幾點:
1. shell中的字符串處理操作與Python的處理機制很相似,Python中的切片操作支持步長切片和逆序顯示。
2. 漢字佔一個字符
2. 字符串切片操作同樣基於索引機制
3. 索引編號:從左到右元素字符串起始偏移量編號爲0;從右到從元素字符串起始偏移量編號爲-1
4. 查詢字符串長度 ${#var}
切片語法:${var:offset}、 ${var:offset:number}
同樣先解釋一下offset、number參數
offset:指定截取字符串的起始位置偏移量
number:指定截取元素字符串的長度或結束位置
1. offset:正數時代表從左向右截取,爲負數時代表從右向左截取。
2. number:爲正數時代表截取長度,爲負數則代表結束位置,當number爲代表結束位置時截取內容不包括第m位
基於模式截取子字符串
#自左向右
- ${var#word}:# 號自左向右,查找var變量所存儲的字符串中,將第一次出現的匹配word的字符串刪除。*可以理解爲匹配任意長度任意字符
- ${var##word*}:## 開啓貪婪模式,自左向右依次匹配,將並所有匹配的字符串都刪除,留下未匹配的部分。
%自右向左
- ${var%word}:%號自右向左,查找var變量所存儲的字符串中,將第一次出現的匹配word的字符串刪除。*可以理解爲匹配任意長度任意字符
- ${var%%word}:%%開啓貪婪模式,自右向左依次匹配,將並所有匹配的字符串都刪除,留下未匹配的部分。
基於模式匹配查找替換字符
1. ${var/pattern/substr} 基於模式自左而右匹配變量中存儲的字符串,並將第1個匹配到的字符串替換爲substr。
2. ${var//pattern/substr} 基於模式自左而右匹配變量中存儲的字符串,並替換所有匹配到的字符串爲substr
3. ${var/#pattern/substr} 將行首匹配到的字符串替換爲substr
4. ${var/%pattern/substr} 將行尾匹配到的字符串替換爲substr
基於模式匹配刪除子字符串
1. ${var/pattern}:刪除var表示的字符串中第一次被pattern匹配到的字符串
2. ${var//pattern}:刪除var表示的字符串中所有被pattern匹配到的字符串
3. ${var/#pattern}:刪除var表示的字符串中所有以pattern爲行首匹配到的 字符串
4. ${var/%pattern}:刪除var所表示的字符串中所有以pattern爲行尾所匹配 到的字符串
字符大小寫轉換
- ${var^^}:把var中的所有小寫字母轉換爲大寫
- ${var,,}:把var中的所有大寫字母轉換爲小寫
重點記憶
- 索引編號:從左到右元素字符串起始偏移量編號爲0;從右到從元素字符串起始偏移量編號爲-1
- offset:正數時代表從左向右截取,爲負數時代表從右向左截取
- number:爲正數時代表截取長度,爲負數則代表結束位置,當number爲代表結束位置時截取內容不包括第m位