如何在sed语句中合并正则提取docker-compose版本号
合并sed命令提取不同格式的docker-compose版本号
针对两种不同格式的docker-compose --version输出:
- 格式1:
docker-compose version 1.29.2, build someId - 格式2:
Docker Compose version v2.12.2
可以用一条sed命令兼容两种情况,直接提取版本号:
docker-compose --version | sed -nr 's/^(docker-compose|Docker Compose) version v?([0-9]+\.[0-9]+\.[0-9]+).*/\2/p'
命令解释
^(docker-compose|Docker Compose):匹配输出开头的两种命令标识,兼容v1版本的小写无空格和v2版本的大写带空格格式version v?:匹配"version"关键字,v?表示后面的v字符是可选的(v2版本会带v前缀,v1版本没有)([0-9]+\.[0-9]+\.[0-9]+):精准捕获主版本号(如1.29.2、2.12.2),避免把后面的build信息或多余内容包含进来.*:匹配版本号之后的所有剩余内容,确保整个行都被处理\2:提取第二个捕获组的内容,也就是我们需要的版本号-nr参数:n启用静默模式(不自动输出每行内容),r启用扩展正则表达式支持
扩展:兼容预发布版本号
如果你的docker-compose版本包含预发布标签(如2.12.2-beta.1),可以调整正则来兼容:
docker-compose --version | sed -nr 's/^(docker-compose|Docker Compose) version v?([0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?).*/\2/p'
内容的提问来源于stack exchange,提问作者ekjcfn3902039
相关产品推荐
相关产品推荐

