字符串操作

注意不同的字符串索引系統:
Bash的第一個字符是從'0'開始記錄的.
Awk的第一個字符是從'1'開始記錄的.

${#variable} 字符串長度

stringZ=abcABC123ABCabc
 echo ${#stringZ}                 # 15
 echo `expr length $stringZ`      # 15

${string:position} ${string:position:length}

# 提取子字符串
stringZ=abcABC123ABCabc
echo ${stringZ:0}                            # abcABC123ABCabc
echo ${stringZ:1}                            # bcABC123ABCabc


# 能不能從字符串的右邊(也就是結尾)部分開始提取子串? 
echo ${stringZ:-4}                           # abcABC123ABCabc
# 默認是提取整個字符串, 就象${parameter:-default}一樣.

 echo ${stringZ:(-4)}                         # Cabc ,使用  "()"  轉義
 echo ${stringZ: -4}                         # Cabc ,:后面有一個空格
# 使用圓括號或者添加一個空格可以"轉義"這個位置參數.

#如果$string參數是"*"或"@", 那么將會從$position位置開始提取$length個位置參數, 但是由于可能沒有$length個位置參數了, 那么就有幾個位置參數就提取幾個位置參數.

echo ${*:2}          # 打印出第2個和后邊所有的位置參數
echo ${@:2}          # 同上.
echo ${*:2:3}        # 從第2個開始, 連續打印3個位置參數

expr substr $string $position $length

# 在$string中從$position開始提取$length長度的子串
# 位置參數從0開始計數

stringZ=abcABC123ABCabc
echo `expr substr $stringZ 1 2`              # ab
echo `expr substr $stringZ 4 3`              # ABC

從開頭刪除最短子串 ${string#substring}

stringZ=abcABC123ABCabc
echo ${stringZ#a*C}      # 123ABCabc

從開頭刪除最長子串 ${string##substring}

stringZ=abcABC123ABCabc
echo ${stringZ##a*C}     # abc
# 截掉'a'到'C'之間最長的匹配字符串.

刪除從結尾匹配的最短子串 ${string%substring}

stringZ=abcABC123ABCabc
echo ${stringZ%b*c}      # abcABC123ABCa

刪除從結尾匹配的最長子串 ${string%%substring}

stringZ=abcABC123ABCabc
echo ${stringZ%%b*c}     # a

子串替換 ${string/substring/replacement}

# 使用$replacement來替換第一個匹配的$substring.
stringZ=abcABC123ABCabc
# 使用'xyz'來替換第一個匹配的'abc'
echo ${stringZ/abc/xyz}           # xyzABC123ABCabc



# 如果$substring匹配$string的開頭部分, 那么就用$replacement來替換$substring
# ${string/#substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替換開頭的'abc'
echo ${stringZ/#abc/XYZ}          # XYZABC123ABCabc


# 如果$substring匹配$string的結尾部分, 那么就用$replacement來替換$substring
# ${string/%substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替換結尾的'abc'
echo ${stringZ/%abc/XYZ}          # abcABC123ABCXYZ

全部子串替換 ${string//substring/replacement}

# 使用$replacement來替換所有匹配的$substring
stringZ=abcABC123ABCabc
 # 用'xyz'來替換所有匹配的'abc'.
echo ${stringZ//abc/xyz}          # xyzABC123ABCxyz

唯愛與技術不可辜負

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容