从变量中删除前面和包含某个子字符串的所有内容

Delete everyting preceding and including a certain substring from variable

在 Bash 中,如何从变量中删除字符直到某个子字符串?

示例:

ananas1kiwi2apple1banana2tree

应如下所示:

apple1banana2tree

本例中的子串是2.

如果要删除 2 之前的子字符串,使用 bash 参数扩展:

${var#*2}
  • # 从左边进行非贪婪匹配,使用 ## 进行贪婪

  • #*2 匹配并丢弃变量 var

  • 中的第一个 2

示例:

$ var='ananas1kiwi2apple1banana2tree'
$ echo "${var#*2}"
apple1banana2tree

使用纯 bash shell parameter expansion.

$ string="ananas1kiwi2apple1banana2tree"
$ newString="${string#*2}"
$ printf "%s\n" "$newString"
apple1banana2tree