使用bash命令提取字符串中的第n个数字



运行以下命令I get0271,有没有办法分别获得0、27和1?

echo '!    ibrav = 0, nat = 27, ntyp = 1' | sed -r 's/[^1-9]*//g'

使用grep而不是sed-o选项只打印匹配的零件,并且每个匹配都在单独的一行上。

echo '!    ibrav = 0, nat = 27, ntyp = 1' | grep -E -o '[0-9]+'

输出:

0
27
1

我发现这种方法可以在bash和make环境中工作。假设;

VAR='!    ibrav = 0, nat = 27, ntyp = 1'

bash:

echo $(VAR) | grep -Po '(nat = d+)')

品牌:

$(eval NUM := $(shell echo $(VAR) | grep -Po '(nat = d+)'))

最新更新