bash字符串操作


字符串操作:

字符串切片:${var:offset:length} 

        a="world"
        ${a:2:2}的結果是:rl
   
取字符串的最后幾個字符:${var: -length}
        注意:冒號之后有空格
       

基於模式取子串: 

        ${var#*word}:其中word可以是指定的任意字符;自左而右,查找var變量所存儲字符中,第一次出現的word,刪除字符開頭直至第一次wrod出現處之間的所有字符;
            # mypath='sysconfig/network-scripts/ifcfg-eth0'
            # echo ${mypath#*/}
            network-scripts/ifcfg-eth0
           
        ${var##*word}: 其中word可以是指定的任意字符;自左而右,查找var變量所存儲字符中,最后一次出現的word,刪除字符開頭直至最后一次wrod出現處之間的所有字符;
            # mypath='/sysconfig/network-scripts/ifcfg-eth0'
            # echo ${mypath##*/}
            ifcfg-eth0

        ${var%word*}: 自右而左,刪除第一次word出現處的字符開始直到尾部的所有字符;
        ${var%%word*}:自右而左,刪除最后一次word出現處的字符開始直到尾部的所有字符;

        例子:url=http://www.magedu.com:80
            取端口:${url##*:}:刪除最后一個冒號之前的所有字符,即取最后一個冒號后邊的字符串
            取協議:${url%%:*}:自右而左,刪除最后一個冒號之后的字符,即自右往左,取最后一個冒號前邊的字符串

查找並替換:
        ${var/pattern/substi}:查找var所表示的字串中,第一次被Pattern匹配到的字串,並以substi替換之;
        ${var//patten/substi}:查找var所表示的字串中,所有被Pattern匹配到的字串,並以substi替換之;

        ${var/#pattern/substi}:以行首錨定的方式將pattern匹配至var所表示的字串上,如果能匹配,則以substi替換之;
        ${var/%pattern/substi}:以行尾錨定的方式將pattern匹配至var所表示的字串上,如果能匹配,則以substi替換之;
            可使用?, *元字符;

查找並刪除:
        ${var/pattern}:刪除pattern匹配到的第一次出現;
        ${var//pattern}: 刪除pattern匹配到的所有出現;
        ${var/#pattern}
        ${var/%pattern}

字符串大小寫轉換:
        ${var^^}:小寫-->大寫
        ${var,,}:大寫-->小寫

   小寫轉大寫:echo "abc" | tr '[a-z]' '[A-Z]'

   大寫轉小寫:echo "ABC" | tr '[A-Z]' '[a-z]'

    可以參考:http://blog.csdn.net/linwhwylb/article/details/5904584

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

        ${var:?err_info}:如果var為空或未設置,那么返回錯誤信息;否則,則返回var自身的值;

        ${var:+word}:如果var自身有正常數據,則返回word;
           
    trap命令:
        trap 'arg' SIGNAL
       
        例如:trap 'echo "quit"; exit 1' SIGNAL  #不會被腳本中的命令接收到,只會被腳本本身接收到

以上是自己總結的,也可以參考:

http://blog.csdn.net/horkychen/article/details/7676151


免責聲明!

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



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