运行以下命令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+)'))