4.20 文本切片与参数操作

这则攻略考查了一些简单的文本替换技术以及Bash中可用的参数扩展简写法。这些简单的技巧通常能够让我们免于敲入多行代码之苦。

4.20.1 实战演练

就用下面的任务练练手吧。

替换变量内容中的部分文本:

  1. $ var="This is a line of text"
  2. $ echo ${var/line/REPLACED}
  3. This is a REPLACED of text"

lineREPLACED替换。

我们可以通过指定字符串的起始位置和长度来生成子串,语法如下:

  1. ${variable_name:start_position:length}

用下面的命令可以打印第5个字符之后的内容:

  1. $ string=abcdefghijklmnopqrstuvwxyz
  2. $ echo ${string:4}
  3. efghijklmnopqrstuvwxyz

从第5个字符开始,打印8个字符:

  1. $ echo ${string:4:8}
  2. efghijkl

起始字符的索引从0开始计数。我们也可以从后向前计数,将最后一个字符索引记为 -1。但如果使用负数作为索引值的话,必须将负数放入括号内,例如(-1)就是最后一个字符的索引。

  1. echo ${string:(-1)}
  2. z
  3. $ echo ${string:(-2):2}
  4. yz

4.20.2 参考

4.10节讲解了从单词中切分字符。