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

 

posted @   时间在哪  阅读(1088)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示