bash的內置字符串處理工具


bash內置字符串處理工具:

1、字符串切片:

    ${var:offset:number}  取字符串的子串;

    ${var:  -length}    取字符串的最右側的length個字符。注意:冒號右側必須有一個空白字符。

演示:

2、基於模式取子串:

  ${var#*word}:其中word是指定的分割符,功能:自左而右,查找var變量所存儲的字符串中,第一次出現的word分隔符,刪除字符串開頭至此分隔符之間(包括分隔符本身)的所有字符;

  ${var##*word}:其中word是指定的分隔符;功能:自左而右,查找var變量所存儲的字符串中,最后一次出現的word分隔符,刪除字符串開頭至此分隔符之間(包括分隔符本身)的所有字符;

演示:

如果是對路徑進行分割的話,最后一個例子相當於取一個絕對路徑的基名。

  ${var%word*}:其中word是指定的分隔符;功能:自右而左,查找var變量所存儲的字符串中,第一次出現的word分隔符,刪除此分隔符至字符串尾部之間(包括分隔符本身)的所有字符。

   ${var%%word*}:其中word是指定的分隔符;功能:自右而左,查找var變量所存儲的字符串中,最后一次出現的word分隔符,刪除此分隔符至字符串尾部之間(包括分隔符本身)的所有字符。

演示:

3、查找替換

  ${var/PATTERN/SUBSTI}:查找var所表示的字符串中,第一次被PATTERN所匹配到的字符串,將其替換為SUBSTI所表示的字符串;

  ${var//PATTERN/SUBSTI}:查找var所表示的字符串中,所有被PATTERN所匹配到的字符串,並將其全部替換為SUBSTI所表示的字符串;

演示:

  ${var/#PATTERN/SUNSTI}:查找var所表示的字符串中,行首被PATTERN所匹配到的字符串,將其替換為SUBSTI所表示的字符串;

  ${var/%PATTERN/SUBSTI}:查找var所表示的字符串中,行尾被PATTERN所匹配到的字符串,將其替換為SUBSTI所表示的字符串。

    注意:PATTERN中要是有glob風格和通配符。

演示

 

支持使用glob風格的通配符

4、查找刪除

  ${var/PATTERN}:以PATTERN為模式從頭部自左而右開始查找var字符串中第一次被匹配之間出現的全部字符,並刪除之。

  ${var//PATTERN}:以PATTERN為模式從頭部自左而右開始查找var字符串中最后一次被匹配之間出現的全部字符,並刪除之 

  ${var/#PATTERN}:以PATTERN為模式,在var字符串中匹配行首出現的PATTERN字符,並刪除之

  ${var/%PATTERN}:以PATTERN為模式,在var字符串中匹配行尾出現的PATTERN字符,並刪除之

演示:

5、字符大小寫轉換

  ${var^^}:把var中的所有小寫字符轉換為大寫

  ${var,,}:把var中的所有大寫字符轉換為小寫。

演示:

6、變量賦值

   ${var:-VALUE}:如果var變量為空,或未設置,那么返回VALUE;否則,則返回var變量的值。

  ${var:=VALUE}:如果var變量為空,或未設置,那么返回VALUE,並將VALUE賦值給var變量;否則,則返回var變量的值。

  ${var:+VALUE}:如果var變量不為空,則返回VALUE;如果var變量為空,則返回為空。

  ${var:?ERROR_INFO}:如果var不為空,或未設置,那么返回ERROR_INFO為錯誤提示;否則,返回var值。

演示:


免責聲明!

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



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