从变量中删除之前并包括某个子字符串的所有内容

Posted

技术标签:

【中文标题】从变量中删除之前并包括某个子字符串的所有内容【英文标题】:Delete everyting preceding and including a certain substring from variable 【发布时间】:2017-03-23 06:03:16 【问题描述】:

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

例子:

ananas1kiwi2apple1banana2tree

应该是这样的:

apple1banana2tree

本例中的子字符串为2

【问题讨论】:

【参考方案1】:

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

$var#*2

# 从左到右进行非贪婪匹配,使用## 表示贪婪

#*2 匹配并丢弃变量 var 中的第一个 2

示例:

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

【讨论】:

【参考方案2】:

使用纯bashshell parameter expansion。

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

【讨论】:

以上是关于从变量中删除之前并包括某个子字符串的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

如何删除包含某个子字符串的所有 PHP 数组元素?

获取子字符串 - 某些字符之前的所有内容

提取某个子字符串(电子邮件地址)

wpf中选中treeview的某个子节点后获取子节点所在的所有父节点的内容用于数据库查询

173竞赛

双指针——leetcode.1332删除回文子序列