shell字符串处理之字符串替换、截断

引言

上文我们已经讲了字符串的比较,接下来我们再来学习一下字符串的替换、截断等处理操作。

字符串替换

1. 匹配串只替换一次

stra="aabbcc123"
strb=${stra/b/s}
  • 第一个斜杠后的表示要匹配的模式串,第二个斜杠之后表示要替换后的新串
  • strb的结果为aasbcc123

2. 匹配串全部替换

stra="aabbcc123"
strb=${stra//b/s}
  • 双斜杠表示替换全部匹配,替换后的结果为aasscc123

3. 替换以某个串开头的字符串

stra="aabbcc123"
strb=${stra/#aa/sss}
  • /#表示匹配以什么开头,替换后的结果为sssbbcc123

4. 替换以某个串结尾的字符串

stra="aabbcc123"
strb=${stra/%123/sss}
  • /%表示以什么结尾,替换后的结果为aabbccsss

字符串截断

1. 指定范围截断

stra="ab.cde.fg"
strb=${stra: 3: 2}
  • 字符串起始下标位置为0,3表示从下标3开始截取,2表示截取长度为2,如果超出则截取到末尾

  • 截取结果为cd

strb=${stra: 3:}
  • 省略截取范围,表示从截取位置开始到末尾

  • 截取结果为cde.fg

2. 指定字符截断

2.1 截取指定字符右边的子串

stra="ab.cdcde.fg"
strb=${stra#*cd}
  • #表示截取操作,*是通配符,*cd表示第一次遇到cd字符就截断

  • 截断结果为cde.fg

stra="ab.cdcde.fg"
strb=${stra##*cd}
  • ##表示最后一次匹配到cd字符才会截断

  • 截断结果为e.fg

2.2 截取指定字符左边的字串

stra="ab.cdcde.fg"
strb=${stra%cd*}
  • %表示截取操作,*是通配符,表示从右到左第一次匹配到cd字符就截断

  • 截断结果为ab.cd

stra="ab.cdcde.fg"
strb=${stra%%cd*}
  • %%功能同##

  • 截断结果为ab.

你可能感兴趣的:(shell,linux,运维)