如何拆分字符串并提取其特定元素?
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'
我需要拆分字符串并提取特定元素。
例如,我有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'