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

Yve*_*ves 6 python regex bash split

我有这样一个字符串:

msg='123abc456def'
Run Code Online (Sandbox Code Playgroud)

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

['123', 'abc', '456', 'def']
Run Code Online (Sandbox Code Playgroud)

在Python中,我可以这样做:

pattern = re.compile(r'(\d+)')
res = pattern.split(msg)[1:]
Run Code Online (Sandbox Code Playgroud)

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

IFS='[0-9]'    # how to define IFS with regex?
echo ${msg[@]}
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 9

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

$ msg='123abc456def'

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

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

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

$ echo "${out[@]}"
123 abc 456 def
Run Code Online (Sandbox Code Playgroud)
  • 正则表达式 (ERE) 模式[[:digit:]]+|[^[:digit:]]+匹配一​​个或多个数字 ( [[:digit:]]+) 或 ( |) 一个或多个非数字 ( [^[:digit:]]+.