持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情
前言
- shell 脚本能够方便我们在linux系统上完成一些重复度极高的工作,比如我们需要批量修改文件名,那么这个时候我们就得去除文件后缀得到文件名,还有我们有的时候想通过URL地址获取到域名,这个时候截取也是一种好办法。话不多数我们直接开始吧!!!
左截取
- 什么叫左截取呢?就是指我们需要按照指定字符集截取,并且只保留右侧的就叫做左截取。
${var#*.}
-
var 就是我们的变量,#号是截取的符号, .是指我们需要按照. 这个符号将var进行截取。
*代表我们想舍弃的内容,他在. 的左侧说明我不想要左侧的内容。 -
上面的截取还是存在一定的问题的,比如
nihao.test.doc这个文件名称对应的文件名应该是nihao.test, 针对这种的我们应该如何截取呢?
${var##*.}
##就表示截取到最后一个 . 符号的位置。这个有点类似我们的lastIndexOf
右截取
- 和左截取语法一样,但是他的符号是
%,然后就是* 和 指定字符的位置摆放问题了。
${var%.*}
-
上面的语法表示从右侧开始删除到首次出现. 位置的内容,保留剩下的内容
-
同样如果我想一直删除下去也就是说保留从右侧开始的最后一个. 字符索引呢?
${var%%.*}
起步
- 还有的时候我们不知道字符有啥特点就像截取固定长度的内容,Java中可以substring来操作,shell和python类似提供了定位操作。
${var:0:3}
-
上面表示从左侧开始0索引位置开始截取一共3个字符。
-
为了方便我们也可以省略最后一个数字用啦表示截取到最后
${var:2}表示从第三个字符开始截取到最后 -
我们还可以通过负号表示方向,${var:-2} 从右侧开始第2个字符开始向左截取