Shell脚本--字符串截取
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通