我需要拆分字符串并提取特定元素。
例如,我有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/ })
但我无法隔离这些价值观。
我尝试按字符数分割,但字符串的每个部分都可以改变其大小。
如果有人可以帮我解决这个问题,我将不胜感激。 :)
答案 0 :(得分:2)
除了所有关于从不使用eval的常见警告外,请尝试:
eval $( echo $str | sed 's/\([A-Za-z][A-Za-z]*\)/ \1=/g')
或者,让所有现代和使用:
echo $str | sed -E 's/([[:alpha:]]+)/ \1=/g'