如何在shell中提取数字并赋值给变量

3

echo DEN_ML2.3_R02.zip | grep -o '[0-9]\+'

Output: 

2
3  
02

我想从DEN_ML2.3_R02.zip中匹配2.302,并将其分配给变量。


不清楚解决方案应该如何泛化。如果您只有一个单一的实例,那么设置 x=2.3y=02,就这样。 - Andrey Tyukin
新手建议:如果一个答案解决了你的问题,请点击旁边的大勾号(✓)接受它,并可选择点赞它(点赞需要至少15个声望点)。如果你发现其他答案有帮助,请点赞它们。接受和点赞有助于未来的读者。请参阅相关的帮助中心文章。 - Allan
1个回答

1
$ echo DEN_ML2.3_R02.zip | grep -Eo '\-?[0-9]+(\.[0-9]+)?'
                                              _________ _
                                                ^       ^
                                             group    quantifier

量词符号 ? 表示该组是可选的

输出:

2.3
02

将变量分配的要求:
$ read a1 a2 < <(echo $(grep -Eo '\-?[0-9]+(\.[0-9]+)?' <<< "DEN_ML2.3_R02.zip"))

或者

$ read a1 a2 < <(
    grep -Eo '\-[0-9]+(\.[0-9]+)?' <<< "DEN_ML2.3_R02.zip" |
    tr '\n' ' '
)

结果:

$ echo $a1
2.3
$ echo $a2
02

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接