使用 bash 命令提取字符串中的第 n 个数字
extract nth number in a string using bash commands
运行下面命令得到0271,有没有办法分别得到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+)'))
运行下面命令得到0271,有没有办法分别得到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+)'))