shell 截取字符串通常有两种方式:截取指定长度的字符串和截取指定模式的字符串。
1. 截取指定长度的字符串
这种方式除了需要指定起始位置还需要指定截取长度。按起始位置可以分为从左边开始或者从右边开始。
a.从左边开始截取
${string:start:length}
其中,string 是要截取的字符串,start 是起始位置(从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)。
示例:
#!/bin/bash string="hello world!" echo ${string} echo ${string:0:7} echo ${string:1}
其结果为:
hello world! hello w ello world!
b.从右边开始截取
${string:0-start:length}
start 前面加上 0- 时,代表了从右边开始。需要注意的是从右边开始计数时,起始数字是 1 。
示例:
#!/bin/bash string="hello world!" echo ${string} echo ${string:0-6:5} echo ${string:0-1}
其结果为:
hello world! world !
2. 截取指定模式的字符串
a. 使用 # 或者 ## 截取右边字符串
${string#*chars} ${string##*chars}
其中,string 是要截取的字符串,chars 是指定的字符串,*
是通配符的一种,表示任意长度的字符串。
第一个命令是指从string字符串起始位置往右寻找 chars 字符串,找到第一个 chars 位置后,忽略 chars 以及其左边的字符串,截取右边的字符串。
第二个命令是指从string字符串起始位置往右寻找 chars 字符串,找到最后一个 chars 位置后,忽略 chars 以及其左边的字符串,截取右边的字符串。
示例:
#!/bin/bash string=$(pwd) echo ${string} echo ${string#*/} echo ${string##*/}
其结果为:
/root/workspace/shell root/workspace/shell shell
b. 使用 % 或者 %% 截取左边字符串
${string%chars*} ${string%%chars*}
因为要截取 chars 左边的字符,而忽略 chars 右边的字符,所以*
应该位于 chars 的右侧。
第一个命令是指从string字符串结尾位置往左寻找 chars 字符串,找到第一个 chars 位置后,忽略 chars 以及其右边的字符串,截取左边的字符串。
第二个命令是指从string字符串结尾位置往左寻找 chars 字符串,找到最后一个 chars 位置后,忽略 chars 以及其右边的字符串,截取左边的字符串。
示例:
#!/bin/bash string=$(pwd) echo ${string} echo ${string%/*} echo ${string%%/*}
其结果为:
/root/workspace/shell /root/workspace
标签:shell,string,--,截取,echo,字符串,chars From: https://www.cnblogs.com/citta/p/17321101.html