【问题标题】:How to split a string and extract its specific elements?如何拆分字符串并提取其特定元素?
【发布时间】:2016-03-08 10:34:25
【问题描述】:

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

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

但我无法隔离这些值。

我试过按字符数分割,但字符串的每一部分都可以改变它的大小。

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

【问题讨论】:

    标签: string bash shell sh


    【解决方案1】:

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

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

    或者,获得所有现代和使用:

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

    【讨论】:

    • 它返回一个数组?我试试values=($(echo $name | sed -E 's/([[:alpha:]]+)/ \1=/g'))
    • 威廉第二版的小修改:echo $str | sed -E 's/([0-9.]+)/ = \1\n/g'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多