如何拆分字符串并提取其特定元素?

How to split a string and extract its specific elements?

我需要拆分字符串并提取特定元素。

例如,我有str

str='C50F2N2Ne50A13.224343968R2'

然后,我需要提取...

C = 50
F = 2
N = 2
Ne = 50
A = 13.224343968
R = 2

其他示例...

str='C5F10N2Ne5A2.0330517838R2'

然后,我需要提取物

C = 5
F = 10
N = 2
Ne = 5
A = 2.0330517838
R = 2

我的第一个想法是提取大写字符...

classes=$(tr -dc '[:upper:]' <<< $name)

但它 return 只有 CFNNAR

我的第二个想法是按特定字符 [delimiter] 拆分

classes=(${name//F/ })
classes=(${classes//C/ })

但我无法隔离这些值。

我尝试按字符数拆分,但字符串的每个部分都可以改变其大小。

如果有人能帮助我解决这个问题,我将不胜感激。 :)

除了关于永远不要使用 eval 的所有常见警告之外,请尝试:

 eval  $( echo $str | sed 's/\([A-Za-z][A-Za-z]*\)/ =/g')

或者,获得所有现代元素并使用:

 echo $str | sed -E 's/([[:alpha:]]+)/ =/g'