Bash提取子字串


在小節中,我們將學習如何計算給定字串的子字串。
子字串是字串中的字元序列。Bash提供了一個從字串提取資訊的選項,Bash中可以使用多種方法提取數位或給定的字串。

例如,"welcome you visits yiibai.""Welcome you visits tw511.com"的子字串。

語法

提取子字串的命令是內建的bash命令,因此從效能角度來看非常有用。子字串提取的語法可以定義為:

${variable:offset:length}

其中,

  • variable是包含字串的變數名稱。
  • offset用於指定從何處開始提取字串的位置。
  • length用於指定從偏移量開始執行的字元範圍。

注意:分配長度是可選的。如果未提供length,則子字串的結尾將是字串的結尾。

下面通過一些範例從字串中提取子字串的概念。

範例1:從開始提取直到特定字元

#!/bin/bash  
#Script to extract first 10 characters of a string  

echo "String: We welcome you on Yiibai."  
str="We welcome you on Yiibai."  

echo "Total characters in a String: ${#str} "  

substr="${str:0:10}"  

echo "Substring: $substr"  
echo "Total characters in Substring: ${#substr} "

執行上面範例程式碼,得到以下結果:

範例2:從特定字元開始提取

#!/bin/bash  
#Script to print from 11th character onwards  

str="We welcome you on Yiibai."  
substr="${str:11}"  
echo "$substr"

在這裡,子字串的結尾與字串的結尾相同。

執行上面範例程式碼,得到以下結果:

maxsu@yiibai:~/bashcode$ vi substring.sh 
maxsu@yiibai:~/bashcode$ ./substring.sh 
you on Yiibai.

範例3:提取單個字元

#!/bin/bash  
#Script to print 11th character of a String  

str="We welcome you on Yiibai."  
substr="${str:11:1}"  
echo "$substr"

執行上面範例程式碼,得到以下結果:

maxsu@yiibai:~/bashcode$ cat /dev/null > substring.sh
maxsu@yiibai:~/bashcode$ vi substring.sh 
maxsu@yiibai:~/bashcode$ ./substring.sh 
y

範例4:從末尾提取特定字元

#!/bin/bash  
#Script to extract 11 characters from last  

str="We welcome you on Yiibai."  
substr="${str:(-11)}"  
echo "$substr"

執行上面範例程式碼,得到以下結果:

maxsu@yiibai:~/bashcode$ cat /dev/null > substring.sh 
maxsu@yiibai:~/bashcode$ vi substring.sh 
maxsu@yiibai:~/bashcode$ ./substring.sh 
 on Yiibai.