bash字符串处理
字符串切片:
${var:offset:length}
[root@localhost?~]#mypath="/etc/sysconfig/network-scripts/" [root@localhost?~]#?echo?${mypath:5}???#偏移5個字符顯示 sysconfig/network-scripts/ [root@localhost?~]#?echo?${mypath:10}??#偏移10個字符顯示 nfig/network-scripts/ [root@localhost?~]#?echo?${mypath:5:5}?#偏移5個字符,取5個字符? sysco取出字符串的最后幾個字符:${var: -length}
??? 注意:-length之前有空白字符;
[root@localhost?~]#?echo?${mypath:?-10} k-scripts/基于模式取子串
${var#*word}:自左而右,查找var變量中存儲的字符串中第一次出現的由word所指明的字符,刪除此字符及其左側的所有內容;
?[root@localhost?~]#mypath="/etc/sysconfig/network-scripts" [root@localhost?~]#?echo?${mypath#*/} etc/sysconfig/network-scripts${var##*word}:自左而右,查找var變量中存儲的字符串中最后一次出現的由word所指明的字符,刪除此字符及其左側的所有內容;
[root@localhost?~]#mypath="/etc/sysconfig/network-scripts" [root@localhost?~]#?echo?${mypath##*/} network-scripts示例:
[root@localhost?~]#mypath="/etc/sysconfig/network-scripts" [root@localhost?~]#?echo?${mypath##*c} ripts [root@localhost?~]#?echo?${mypath#*c} /sysconfig/network-scripts${var%word*}:自右而左,查找var變量中存儲的字符串中第一次出現的由word所指明的字符,刪除此字符及其右側的所有內容;
${var%%word*}:自右而左,查找var變量中存儲的字符串中最后一次出現的由word所指明的字符,刪除此字符及其右側的所有內容;
示例:
[root@localhost?~]#mypath="/etc/sysconfig/network-scripts" [root@localhost?~]#?echo?${mypath%c*} /etc/sysconfig/network-s [root@localhost?~]#?echo?${mypath%%c*} /et示例:取一個URL的協議和端口
[root@localhost?~]#url="http://www.baidu.com:80" [root@localhost?~]#?echo?${url##*:} 80 [root@localhost?~]#?echo?${url%%:*} http?
查找替換:
??? ${var/pattern/replacement}:查找var變量存儲的字符中第一次由pattern匹配到的內容,并替換為replacement;
[root@localhost?~]#url="http://www.baidu.com:80" [root@localhost?~]#?echo?${url/www/WWW} http://WWW.baidu.com:80 [root@localhost?~]#?echo?${url/w/W} http://Www.baidu.com:80??? ${var//pattern/replacement}:查找var變量存儲的字符中所有能夠由pattern匹配到的內容,并替換為replacement;
[root@localhost?~]#?echo?${url//w/W} http://WWW.baidu.com:80??? ${var/#pattern/replacement}:查找var變量存儲的字符中最開始處能夠由pattern匹配到的內容,并替換為replacement;
[root@localhost?~]#?userinfo="root:x:0:0:rootuser:/root:/bin/bash" [root@localhost?~]#?echo?${userinfo/#root/ROOT} ROOT:x:0:0:root?user:/root:/bin/bash??? ${var/%pattern/replacement}:查找var變量存儲的字符中最后位置能夠由pattern匹配到的內容,并替換為replacement;
[root@localhost?~]#?userinfo="root:x:0:0:rootuser:/root:/bin/root" [root@localhost?~]#?echo?${userinfo/%root/ROOT} root:x:0:0:root?user:/root:/bin/ROOT查找刪除:
??? ${var/pattern}:查找var變量存儲的字符中第一次由pattern匹配到的內容,并刪除;
??? ${var//pattern}:查找var變量存儲的字符中所有能夠由pattern匹配到的內容,并刪除;
??? ${var/#pattern}:查找var變量存儲的字符中最開始處能夠由pattern匹配到的內容,并刪除;
??? ${var/%pattern}:查找var變量存儲的字符中最后位置能夠由pattern匹配到的內容,并刪除;
[root@localhost?~]#?userinfo="root:x:0:0:rootuser:/root:/bin/root" [root@localhost?~]#?echo?${userinfo/root} :x:0:0:root?user:/root:/bin/root [root@localhost?~]#?echo?${userinfo//root} :x:0:0:?user:/:/bin/ [root@localhost?~]#?echo?${userinfo/#root} :x:0:0:root?user:/root:/bin/root [root@localhost?~]#?echo?${userinfo/%root} root:x:0:0:root?user:/root:/bin/字符串大小寫轉換:
??? ${var^^}:把var變量中的所有小寫字母,統統替換為大寫;
??? ${var,,}:把var變量中的所有大寫字母,統統替換為小寫;
[root@localhost?~]#?echo?$userinfo root:x:0:0:root?user:/root:/bin/root [root@localhost?~]#?myinfo=${userinfo^^} [root@localhost?~]#?echo?$myinfo ROOT:X:0:0:ROOT?USER:/ROOT:/BIN/ROOT [root@localhost?~]#?echo?${myinfo,,} root:x:0:0:root?user:/root:/bin/root變量賦值:
??? ${var:-word}:如果變量var為空或未聲明,則返回word所表示的字符串;否則,則返回var變量的值;
[root@localhost?~]#?echo?$name#這行就是空的 [root@localhost?~]#?echo?${name:-tom} tom [root@localhost?~]#?name=hello [root@localhost?~]#?echo?${name:-tom} hello??? ${var:=word}:如果變量var為空或未聲明,則返回word所表示的字符串,并且把word賦值為var變量;否則,則返回var變量的值;
[root@localhost?~]#?echo?$name#這行就是空的 [root@localhost?~]#?name=${name:-tom} [root@localhost?~]#?echo?$name tom [root@localhost?~]#?name=${name:-jerry} [root@localhost?~]#?echo?$name tom??? ${var:?error}:如果變量var為空或未聲明,則返回error為錯誤信息;否則,則返回var變量的值;
[root@localhost?~]#?echo?"User's?name?is${name:?wrong}" -bash:?name:?wrong [root@localhost?~]#?name=tom [root@localhost?~]#?echo?"User's?name?is${name:?wrong}" User's?name?is?tom??? ${var:+word}:如果變量var為空或未聲明,忽略;否則,則返回word;
[root@localhost?~]#?unset?name [root@localhost?~]#?echo?"User's?name?is${name:+wrong}" User's?name?is [root@localhost?~]#?name=tom [root@localhost?~]#?echo?"User's?name?is${name:+wrong}" User's?name?is?wrong轉載于:https://blog.51cto.com/ximenfeibing/1663396
總結
- 上一篇: innodb行锁理解
- 下一篇: JSP具体条款——response对象