vim字符串截取那些事

382 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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个字符开始向左截取