在小节中,我们将学习如何计算给定字符串的子字符串。
子字符串是字符串中的字符序列。Bash提供了一个从字符串提取信息的选项,Bash中可以使用多种方法提取数字或给定的字符串。
例如,"welcome you visits zyiz."
是"Welcome you visits zyiz.net"
的子字符串。
提取子字符串的命令是内置的bash命令,因此从性能角度来看非常有用。子字符串提取的语法可以定义为:
${variable:offset:length}
其中,
variable
是包含字符串的变量名称。offset
用于指定从何处开始提取字符串的位置。length
用于指定从偏移量开始执行的字符范围。注意:分配长度是可选的。如果未提供
length
,则子字符串的结尾将是字符串的结尾。
下面通过一些示例从字符串中提取子字符串的概念。
#!/bin/bash #Script to extract first 10 characters of a string echo "String: We welcome you on zyiz." str="We welcome you on zyiz." echo "Total characters in a String: ${#str} " substr="${str:0:10}" echo "Substring: $substr" echo "Total characters in Substring: ${#substr} "
执行上面示例代码,得到以下结果:
#!/bin/bash #Script to print from 11th character onwards str="We welcome you on zyiz." substr="${str:11}" echo "$substr"
在这里,子字符串的结尾与字符串的结尾相同。
执行上面示例代码,得到以下结果:
maxsu@zyiz:~/bashcode$ vi substring.sh maxsu@zyiz:~/bashcode$ ./substring.sh you on zyiz.
#!/bin/bash #Script to print 11th character of a String str="We welcome you on zyiz." substr="${str:11:1}" echo "$substr"
执行上面示例代码,得到以下结果:
maxsu@zyiz:~/bashcode$ cat /dev/null > substring.sh maxsu@zyiz:~/bashcode$ vi substring.sh maxsu@zyiz:~/bashcode$ ./substring.sh y
#!/bin/bash #Script to extract 11 characters from last str="We welcome you on zyiz." substr="${str:(-11)}" echo "$substr"
执行上面示例代码,得到以下结果:
maxsu@zyiz:~/bashcode$ cat /dev/null > substring.sh maxsu@zyiz:~/bashcode$ vi substring.sh maxsu@zyiz:~/bashcode$ ./substring.sh on zyiz.