<u id="44mza"></u>

  • 主頁 > 知識庫 > Shell字符串截取的實現(xiàn)方法(非常詳細(xì))

    Shell字符串截取的實現(xiàn)方法(非常詳細(xì))

    熱門標(biāo)簽:電話機器人對家居行業(yè)幫助大嗎 AI智能電銷機器人壞處 蘭州電銷機器人加盟 電商外呼系統(tǒng)排名 黑暗之魂3地圖標(biāo)注 合肥電銷外呼系統(tǒng)供應(yīng)商 地圖標(biāo)注審核周期 沈陽ai電銷智能機器人 如何申請400的電話呀

    Shell 截取字符串通常有兩種方式:從指定位置開始截取和從指定字符(子字符串)開始截取。

    從指定位置開始截取

    這種方式需要兩個參數(shù):除了指定起始位置,還需要截取長度,才能最終確定要截取的字符串。

    既然需要指定起始位置,那么就涉及到計數(shù)方向的問題,到底是從字符串左邊開始計數(shù),還是從字符串右邊開始計數(shù)。答案是 Shell 同時支持兩種計數(shù)方式。

    1) 從字符串左邊開始計數(shù)

    如果想從字符串的左邊開始計數(shù),那么截取字符串的具體格式如下:

    ${string: start :length}

    其中,string 是要截取的字符串,start 是起始位置(從左邊開始,從 0 開始計數(shù)),length 是要截取的長度(省略的話表示直到字符串的末尾)。

    例如:

    url="jb51.net"
    echo ${url: 2: 9}
    

    結(jié)果為biancheng。

    再如:

    url="jb51.net"
    echo ${url: 2} #省略 length,截取到字符串末尾
    

    結(jié)果為biancheng.net。

    2) 從右邊開始計數(shù)

    如果想從字符串的右邊開始計數(shù),那么截取字符串的具體格式如下:

    ${string: 0-start :length}
    

    同第 1) 種格式相比,第 2) 種格式僅僅多了0-,這是固定的寫法,專門用來表示從字符串右邊開始計數(shù)。

    這里需要強調(diào)兩點:

    • 從左邊開始計數(shù)時,起始數(shù)字是 0(這符合程序員思維);從右邊開始計數(shù)時,起始數(shù)字是 1(這符合常人思維)。計數(shù)方向不同,起始數(shù)字也不同。
    • 不管從哪邊開始計數(shù),截取方向都是從左到右。

    例如:

    url="jb51.net"
    echo ${url: 0-13: 9}
    

    結(jié)果為biancheng。從右邊數(shù),b是第 13 個字符。

    再如:

    url="jb51.net"
    echo ${url: 0-13} #省略 length,直接截取到字符串末尾
    

    結(jié)果為biancheng.net。

    從指定字符(子字符串)開始截取

    這種截取方式無法指定字符串長度,只能從指定字符(子字符串)截取到字符串末尾。Shell 可以截取指定字符(子字符串)右邊的所有字符,也可以截取左邊的所有字符。

    1) 使用 # 號截取右邊字符

    使用#號可以截取指定字符(或者子字符串)右邊的所有字符,具體格式如下:

    ${string#*chars}
    

    其中,string 表示要截取的字符,chars 是指定的字符(或者子字符串),*是通配符的一種,表示任意長度的字符串。*chars連起來使用的意思是:忽略左邊的所有字符,直到遇見 chars(chars 不會被截?。?。

    請看下面的例子:

    url="http://jb51.net/index.html"
    echo ${url#*:}
    

    結(jié)果為//jb51.net/index.html。

    以下寫法也可以得到同樣的結(jié)果:

    echo ${url#*p:}
    echo ${url#*ttp:}
    

    如果不需要忽略 chars 左邊的字符,那么也可以不寫*,例如:

    url="http://jb51.net/index.html"
    echo ${url#http://}
    

    結(jié)果為jb51.net/index.html。

    注意,以上寫法遇到第一個匹配的字符(子字符串)就結(jié)束了。例如:

    url="http://jb51.net/index.html"
    echo ${url#*/}
    

    結(jié)果為/jb51.net/index.html。url 字符串中有三個/,輸出結(jié)果表明,Shell 遇到第一個/就匹配結(jié)束了。

    如果希望直到最后一個指定字符(子字符串)再匹配結(jié)束,那么可以使用##,具體格式為:

    ${string##*chars}
    

    請看下面的例子:

    #!/bin/bash
    url="http://jb51.net/index.html"
    echo ${url#*/}  #結(jié)果為 /jb51.net/index.html
    echo ${url##*/}  #結(jié)果為 index.html
    str="---aa+++aa@@@"
    echo ${str#*aa}  #結(jié)果為 +++aa@@@
    echo ${str##*aa} #結(jié)果為 @@@
    

    2) 使用 % 截取左邊字符

    使用%號可以截取指定字符(或者子字符串)左邊的所有字符,具體格式如下:

    ${string%chars*}
    

    請注意*的位置,因為要截取 chars 左邊的字符,而忽略 chars 右邊的字符,所以*應(yīng)該位于 chars 的右側(cè)。其他方面%和#的用法相同,這里不再贅述,僅舉例說明:

    #!/bin/bash
    url="http://jb51.net/index.html"
    echo ${url%/*} #結(jié)果為 http://jb51.net
    echo ${url%%/*} #結(jié)果為 http:
    str="---aa+++aa@@@"
    echo ${str%aa*} #結(jié)果為 ---aa+++
    echo ${str%%aa*} #結(jié)果為 ---
    

    匯總

    最后,我們對以上 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 字符串第一次出現(xiàn) *chars 的位置開始,截取 *chars 右邊的所有字符。
    ${string##*chars} 從 string 字符串最后一次出現(xiàn) *chars 的位置開始,截取 *chars 右邊的所有字符。
    ${string%*chars} 從 string 字符串第一次出現(xiàn) *chars 的位置開始,截取 *chars 左邊的所有字符。
    ${string%%*chars} 從 string 字符串最后一次出現(xiàn) *chars 的位置開始,截取 *chars 左邊的所有字符。

    到此這篇關(guān)于Shell字符串截取的實現(xiàn)方法(非常詳細(xì))的文章就介紹到這了,更多相關(guān)Shell字符串截取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

    您可能感興趣的文章:
    • Linux Shell 截取字符串的方法示例
    • shell編程中的字符串截取方法小結(jié)
    • Powershell截取字符串并添加省略號的例子
    • Shell腳本8種字符串截取方法總結(jié)
    • Shell字符串截取的詳細(xì)方法

    標(biāo)簽:常州 淮南 隴南 河池 黔南 河北 通遼 黔南

    巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell字符串截取的實現(xiàn)方法(非常詳細(xì))》,本文關(guān)鍵詞  Shell,字符串,截,取的,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell字符串截取的實現(xiàn)方法(非常詳細(xì))》相關(guān)的同類信息!
  • 本頁收集關(guān)于Shell字符串截取的實現(xiàn)方法(非常詳細(xì))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章