加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 21:25:31 所属栏目:安全 来源:网络整理
导读:我有这样一个字符串: msg='123abc456def' 现在我需要拆分msg并获得如下结果: ['123','abc','456','def'] 在python中,我可以这样做: pattern = re.compile(r'(d+)')res = pattern.split(msg)[1:] 如何在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:]])或(|)一个或多个非数字([^] [:数字:]] .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读