微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在bash脚本中根据正则表达式拆分字符串

我有这样一个字符串:

msg='123abc456def'

现在我需要拆分msg并获得如下结果:

['123','abc','456','def']

在python中,我可以这样做:

pattern = re.compile(r'(\d+)')
res = pattern.split(msg)[1:]

如何在bash脚本中获得相同的结果?
我试过这样但是它不起作用:

IFS='[0-9]'    # how to define IFS with regex?
echo ${msg[@]}

解决方法

使用grep获取子字符串,并使用命令替换将输出放入数组中:

$msg='123abc456def'

$out=( $(grep -Eo '[[:digit:]]+|[^[:digit:]]+' <<<"$msg") )

$echo "${out[0]}"
123

$echo "${out[1]}"
abc

$echo "${out[@]}"
123 abc 456 def

>正则表达式(ERE)模式[[:digit:]] | [^ [:digit:]]匹配一个或多个数字([[:digit:]])或(|)一个或多个非数字([^] [:数字:]] .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐