在Makefile中分割并剪切字符串

问题描述 投票:0回答:1

我正在制作Makefile。

version := v39.0.12.8    // format rules: va.b.c.d

我想根据格式获取“ version_a”,在这种情况下为“ 39”。这个怎么做?也许通过“ sed / cut / awk,但我不熟悉这些shell命令。

例如

version         version_a  version_b   version_c  version_d
v39.0.12.8      39         0            12        8
v87.2.9.17      87         2            9         17
v142.98.77.68   142        98           77        68
shell awk sed makefile cut
1个回答
0
投票

使用GNU make和GNU grep:

SHELL=/bin/bash
version := v39.0.12.8

version_a := $(shell grep -Po 'v\K[^.]*' <<<"$(version)")
version_b := $(shell grep -Po 'v[^.]*\.*\K[^.]*' <<<"$(version)")
version_c := $(shell grep -Po 'v[^.]*\.*[^.]*\.\K[^.]*' <<<"$(version)")
version_d := $(shell grep -Po 'v[^.]*\.*[^.]*\.[^.]*\.\K[^.]*' <<<"$(version)")

all:
        @echo  version_a $(version_a)
        @echo  version_b $(version_b)
        @echo  version_b $(version_c)
        @echo  version_b $(version_d)

输出:

版本_a 39版本_b 0版本_b 12版本_b 8
© www.soinside.com 2019 - 2024. All rights reserved.