Shell實(shí)現(xiàn)字符串處理的方法詳解
大小寫轉(zhuǎn)化
# 把變量中的第一個(gè)字符換成大寫 ${test^} # 把變量中的所有小寫字母,全部替換為大寫 ${test^^} # 把變量中的第一個(gè)字符換成小寫 ${test,} # 把變量中的所有大寫字母,全部替換為小寫 ${test,,}
示例
#!/bin/bash # script file name is test.sh test="abcDEF" echo "test^=${test^}" echo "test^^=${test^^}" echo "test,=${test,}" echo "test,,=${test,,}"
獲取字符串長(zhǎng)度
${#string}
替換
整體替換
# 若變量var為空,則用string來(lái)替換此處的值,最常用。 ${var:-string} # 若變量var為空,則用string來(lái)替換此處的值,把string賦給變量var。 ${var:=string} # 若變量var不為空,則用string來(lái)替換此處的值。 ${var:+string} # 若變量var不為空,則用string來(lái)替換此處的值; # 若變量var為空,則把string輸出到標(biāo)準(zhǔn)錯(cuò)誤中,并從腳本中退出。 # 常用利用此特性來(lái)檢查是否設(shè)置了變量的值。 ${var:?string}
部分替換
# 只替換第1個(gè)子串 ${var/old/new} # 替換全部子串 ${var//old/new}
截取
# 從string字符串的左邊第start個(gè)字符開始(不包含第start個(gè)字符),向右截取到最后,start從0開始; ${string:start} # 從string字符串的左邊第start個(gè)字符開始(不包含第start個(gè)字符),向右截取length個(gè)字符; ${string:start:length} # 從string字符串的右邊第start個(gè)字符開始(包含第start個(gè)字符),向右截取到最后,start從1開始; ${string:0-start} # 從string字符串的右邊第start個(gè)字符開始(包含第start個(gè)字符),向右截取length個(gè)字符,start從1開始; ${string:0-start:length} # 從string字符串左邊第一次出現(xiàn)*chars的位置開始,截取*chars右邊的所有字符,不包含chars; ${string#*chars} # 從string字符串左邊最后一次出現(xiàn)*chars的位置開始,截取*chars右邊的所有字符,不包含chars; ${string##*chars} # 從string字符串右邊第一次出現(xiàn)chars*的位置開始,截取chars*左邊的所有字符,不包含chars; ${string%chars*} # 從string字符串右邊最后一次出現(xiàn)chars*的位置開始,截取chars*左邊的所有字符,不包含chars; ${string%%*chars*}
示例
#!/bin/bash # script file name is test.sh url="https://blog.csdn.net/monarch91" echo "url=${url}" echo "url:8=${url:8}" echo "url:8:4=${url:8:4}" echo "url:0-8=${url:0-8}" echo "url:0-8:4=${url:0-8:4}" echo "url#*c=${url#*c}" echo "url##*c=${url##*c}" echo "url%c*=${url%c*}" echo "url%%c*=${url%%c*}"
補(bǔ)充
當(dāng)然,除了以上操作,Shell還有許多字符串操作,下面小編為大家整理了一些,需要的可以參考一下
字符串的拼接
str1=www str2=bilibili string1=$str1$str2 #中間不加別的,直接放一起 string2="$str1 $str2" #雙引號(hào)括住,中間可加任意字串 string3=$str1"..."$str2 #整體不加引號(hào),若中間要出現(xiàn)別的字串需前后緊挨,且字串雙引號(hào)括住 string4="${str1}.${str2}.com" #也可以使用${}方式引用變量 echo $string1 echo $string2 echo $string3 echo $string4
運(yùn)行結(jié)果:
wwwbilibili
www bilibili
www...bilibili
www.bilibili.com
讀取字符串
$ echo ${abc-'ok'} ok $ echo $abc $ echo ${abc='ok'} ok $ echo $abc ok $ var1=11;var2=12;var3= $ echo ${!v@} var1 var2 var $ echo ${!v*} var1 var2 var3
#${!varprefix*}
與${!varprefix@}
相似,可以通過變量名前綴字符,搜索已經(jīng)定義的變量,無(wú)論是否為空值。
字符串比較
[[ "a.txt" == a* ]] #邏輯真(pattern matching) [[ "a.txt" =~ .*\.txt ]] #邏輯真(regex matching) [[ "abc" == "abc" ]] #邏輯真(string comparision) [[ "11" < "2" ]] #邏輯真(string comparision),按 ascii 值比較
到此這篇關(guān)于Shell實(shí)現(xiàn)字符串處理的方法詳解的文章就介紹到這了,更多相關(guān)Shell字符串處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux awk時(shí)間計(jì)算腳本及awk命令詳解
這篇文章主要介紹了linux awk時(shí)間計(jì)算腳本及awk命令詳解的相關(guān)資料,需要的朋友可以參考下2015-11-11每天學(xué)一個(gè) Linux 命令之more命令
more命令,功能類似 cat ,more會(huì)以一頁(yè)一頁(yè)的顯示方便使用者逐頁(yè)閱讀,而最基本的指令就是按空白鍵(space)就往下一頁(yè)顯示,按 b 鍵就會(huì)往回(back)一頁(yè)顯示,而且還有搜尋字串的功能2016-12-12Linux中執(zhí)行shell腳本的4種方法總結(jié)
這篇文章主要介紹了Linux中執(zhí)行shell腳本的4種方法總結(jié),即在Linux中運(yùn)行shell腳本的4種方法,需要的朋友可以參考下2014-08-08