欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux shell脚本的字符串截取

程序员文章站 2022-07-14 17:54:09
...

截取左边保留右边

有变量 var=http://www.csdn.cn/a.html

如果想要截取// 之前的字符即获取到 www.csdn.cn/a.html

[Jack@www script]$ echo ${var}
http://www.csdn.cn/a.html
[Jack@www script]$ echo ${var#*//}
www.csdn.cn/a.html
[Jack@www script]$

# 可以记为删除左边而*表示任意的意思,直到遇到 第一个//,删除//以及左边所有的字符。

如果想要只获取 a.html 其余的都删掉怎么做?

[Jack@www script]$ echo ${var}
http://www.csdn.cn/a.html
[Jack@www script]$ echo ${var##*/}
a.html
[Jack@www script]$ 

上面我们知道#*表示删除第一个 /以及左边的所有字符,而我们现在想要最后一个/之后的字符,此时就要用到##*,双#可以理解为强力删除,直到把最后一个符合条件的也删除。

截取右边保留左边

有变量 var="http://www.csdn.cn/a.html"

如果想要左边的 http该怎么办?

[Jack@www script]$ echo $var
 http://www.csdn.cn/a.html
[Jack@www script]$ echo ${var%:*}
http
[Jack@www script]$ 

理解和上面的#一样,只是%表示从右边开始,同样%%也表示强力删除的意思,只不过方向是从右到左。

[Jack@www script]$ echo $var
http://www.csdn.cn/a.html
[Jack@www script]$ echo ${var%%/*}
http:
[[email protected] script]$ 

截取指定位置以及指定个数

从左边开始第几个字符截取指定个数的字符

echo ${var:1:5}

表示从左边下边为1的字符开始截取5个字符。

从左边第几个字符开始,直到结束

echo ${var:7}

表示从字符串下标为7的字符开始一直截取到结束

从右边开始,截取指定字符个数

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。

注意:左边的第一个字符是用 0 表示,右边的第一个字符用 0或1 表示