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

时间:2015-12-03 17:21:41

标签: string bash shell sh

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

例如,我有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)

但它仅返回CFNNAR

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

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

但我无法隔离这些价值观。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

或者,让所有现代和使用:

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