${string: start :length} | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
${string: start} | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 |
${string: 0-start :length} | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
${string: 0-start} | 从 string 字符串的右边第 start 个字符开始截取,直到最后。 |
${string#*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
${string##*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
${string%*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
${string%%*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
1) 从字符串左边开始计数
${string: start :length}
其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)
id="Fn-1-LDM0057_L3_1.fq.gz:Fn-1-LDM0057_L3_2.fq.gz"
echo ${id: 5:7}
echo ${id:5} # 直到结尾
2 从字符串右边开始计数
${string: 0-start :length}
从右边开始计数时,起始数字是 1
id="Fn-1-LDM0057_L3_1.fq.gz:Fn-1-LDM0057_L3_2.fq.gz"
echo ${id:0-18:7}
echo ${id:0-18} # 直到结尾
3. 使用 # 号截取右边字符
从左边开始匹配。
${string#*chars} # 遇到第一个匹配的字符(子字符串)就结束
${string##*chars} # 直到最后一个指定字符(子字符串)再匹配结束
id="Fn-1-LDM0057_L3_1.fq.gz:Fn-1-LDM0057_L3_2.fq.gz"
echo ${id#*:}
echo ${id#*_:}
echo ${id##*_}
4. 使用 % 截取左边字符
从右边开始匹配。
id="Fn-1-LDM0057_L3_1.fq.gz:Fn-1-LDM0057_L3_2.fq.gz"
echo ${id%:*}
echo ${id%_*}
echo ${id%%_*}