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 表示
上一篇: 格式化字符串format函数
下一篇: Linux--shell脚本中截取字符串