溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

shell字符串處理

發(fā)布時(shí)間:2020-08-10 05:33:33 來(lái)源:網(wǎng)絡(luò) 閱讀:637 作者:houzhihui 欄目:系統(tǒng)運(yùn)維

字符串切片操作

shell字符串切片操作與數(shù)據(jù)組元素字符切片操作基本相同,在shell中處理字符串要注意以下幾點(diǎn):

1.  shell中的字符串處理操作與Python的處理機(jī)制很相似,Python中的切片操作支持步長(zhǎng)切片和逆序顯示。
2.  漢字占一個(gè)字符
2.  字符串切片操作同樣基于索引機(jī)制
3.  索引編號(hào):從左到右元素字符串起始偏移量編號(hào)為0;從右到從元素字符串起始偏移量編號(hào)為-1
4.  查詢字符串長(zhǎng)度 ${#var}

切片語(yǔ)法:${var:offset}、 ${var:offset:number}
同樣先解釋一下offset、number參數(shù)
offset:指定截取字符串的起始位置偏移量
number:指定截取元素字符串的長(zhǎng)度或結(jié)束位置

1.  offset:正數(shù)時(shí)代表從左向右截取,為負(fù)數(shù)時(shí)代表從右向左截取。
2.  number:為正數(shù)時(shí)代表截取長(zhǎng)度,為負(fù)數(shù)則代表結(jié)束位置,當(dāng)number為代表結(jié)束位置時(shí)截取內(nèi)容不包括第m位

基于模式截取子字符串
#自左向右

  1. ${var#word}:# 號(hào)自左向右,查找var變量所存儲(chǔ)的字符串中,將第一次出現(xiàn)的匹配word的字符串刪除。*可以理解為匹配任意長(zhǎng)度任意字符
  2. ${var##word*}:## 開啟貪婪模式,自左向右依次匹配,將并所有匹配的字符串都刪除,留下未匹配的部分。

%自右向左

  1. ${var%word}:%號(hào)自右向左,查找var變量所存儲(chǔ)的字符串中,將第一次出現(xiàn)的匹配word的字符串刪除。*可以理解為匹配任意長(zhǎng)度任意字符
  2. ${var%%word}:%%開啟貪婪模式,自右向左依次匹配,將并所有匹配的字符串都刪除,留下未匹配的部分。

基于模式匹配查找替換字符

1. ${var/pattern/substr} 基于模式自左而右匹配變量中存儲(chǔ)的字符串,并將第1個(gè)匹配到的字符串替換為substr。
2. ${var//pattern/substr} 基于模式自左而右匹配變量中存儲(chǔ)的字符串,并替換所有匹配到的字符串為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為行尾所匹配 到的字符串

字符大小寫轉(zhuǎn)換

  1. ${var^^}:把var中的所有小寫字母轉(zhuǎn)換為大寫
  2. ${var,,}:把var中的所有大寫字母轉(zhuǎn)換為小寫

重點(diǎn)記憶

  1. 索引編號(hào):從左到右元素字符串起始偏移量編號(hào)為0;從右到從元素字符串起始偏移量編號(hào)為-1
  2. offset:正數(shù)時(shí)代表從左向右截取,為負(fù)數(shù)時(shí)代表從右向左截取
  3. number:為正數(shù)時(shí)代表截取長(zhǎng)度,為負(fù)數(shù)則代表結(jié)束位置,當(dāng)number為代表結(jié)束位置時(shí)截取內(nèi)容不包括第m位
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI