日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Shell實現字符串處理的方法詳解_linux shell

作者:農民工老王 ? 更新時間: 2022-11-12 編程語言

大小寫轉化

# 把變量中的第一個字符換成大寫
${test^}

# 把變量中的所有小寫字母,全部替換為大寫
${test^^}

# 把變量中的第一個字符換成小寫
${test,}

# 把變量中的所有大寫字母,全部替換為小寫
${test,,}

示例

#!/bin/bash
# script file name is test.sh 
test="abcDEF"
echo "test^=${test^}"
echo "test^^=${test^^}"
echo "test,=${test,}"
echo "test,,=${test,,}"

獲取字符串長度

${#string}

替換

整體替換

# 若變量var為空,則用string來替換此處的值,最常用。
${var:-string}

# 若變量var為空,則用string來替換此處的值,把string賦給變量var。
${var:=string}

# 若變量var不為空,則用string來替換此處的值。
${var:+string}

# 若變量var不為空,則用string來替換此處的值;
# 若變量var為空,則把string輸出到標準錯誤中,并從腳本中退出。
# 常用利用此特性來檢查是否設置了變量的值。
${var:?string}

部分替換

# 只替換第1個子串
${var/old/new}

# 替換全部子串
${var//old/new}

截取

# 從string字符串的左邊第start個字符開始(不包含第start個字符),向右截取到最后,start從0開始;
${string:start}

# 從string字符串的左邊第start個字符開始(不包含第start個字符),向右截取length個字符;
${string:start:length}

# 從string字符串的右邊第start個字符開始(包含第start個字符),向右截取到最后,start從1開始;
${string:0-start}

# 從string字符串的右邊第start個字符開始(包含第start個字符),向右截取length個字符,start從1開始;
${string:0-start:length}

# 從string字符串左邊第一次出現*chars的位置開始,截取*chars右邊的所有字符,不包含chars;
${string#*chars}

# 從string字符串左邊最后一次出現*chars的位置開始,截取*chars右邊的所有字符,不包含chars;
${string##*chars}

# 從string字符串右邊第一次出現chars*的位置開始,截取chars*左邊的所有字符,不包含chars;
${string%chars*}

# 從string字符串右邊最后一次出現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*}"

補充

當然,除了以上操作,Shell還有許多字符串操作,下面小編為大家整理了一些,需要的可以參考一下

字符串的拼接

str1=www
str2=bilibili

string1=$str1$str2              #中間不加別的,直接放一起
string2="$str1 $str2"           #雙引號括住,中間可加任意字串
string3=$str1"..."$str2         #整體不加引號,若中間要出現別的字串需前后緊挨,且字串雙引號括住
string4="${str1}.${str2}.com"   #也可以使用${}方式引用變量

echo $string1
echo $string2
echo $string3
echo $string4

運行結果:

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@}相似,可以通過變量名前綴字符,搜索已經定義的變量,無論是否為空值。

字符串比較

[[ "a.txt" == a* ]]        #邏輯真(pattern matching)
[[ "a.txt" =~ .*\.txt ]]   #邏輯真(regex matching)
[[ "abc" == "abc" ]]       #邏輯真(string comparision)
[[ "11" < "2" ]]           #邏輯真(string comparision),按 ascii 值比較

原文鏈接:https://blog.csdn.net/monarch91/article/details/123918335

欄目分類
最近更新