【问题标题】:Increment version with 1 bash (awk)1 bash (awk) 的增量版本
【发布时间】:2020-08-29 14:20:13
【问题描述】:

我尝试增加一个类似于0.0.1-pre 的版本号。我想增加第三列。结果应如下所示:

0.0.2-pre
0.0.3-pre
0.0.4-pre
0.0.5-pre
.........

我想要echo 0.0.1-pre | awk 'BEGIN{x=0;FS=OFS="."} NF>1{$3=$3+x;x++}1'之类的东西

【问题讨论】:

  • 0.0.9-pre 会发生什么? 0.0.10-pre0.1.0-pre?
  • 您的输入是单个版本号,但输出应该是一个列表。这个清单应该有多长?是否有其他参数指定步骤数或版本上限?

标签: bash unix


【解决方案1】:

bash 的大括号扩展

printf '%s\n' 0.0.{2..10}-pre
  • 参见 bash 手册的本地部分PAGER='less +/^[[:blank:]]*Brace\ Expansion' man bash

【讨论】:

  • 我想要这样的东西echo 0.0.1-pre | awk 'BEGIN{x=0;FS=OFS="."} NF>1{$3=$3+x;x++}1'
  • 我已经解决了命令printf '%s\n' "0.0.1-pre" | awk -F '.' '{ printf("%s.%s.%01d-pre\n", $1, $2, $3 + 1) }'的问题
【解决方案2】:

如果您对增加包含版本号(格式为major.minor.patch-release)的字符串的第三个数字 (patch) 的纯 bash 解决方案感兴趣,请尝试:

version=0.0.2-pre

release=${version##*-}
major_minor_patch=${version%-*}
major_minor=${major_minor_patch%.*}
patch=${major_minor_patch##*.}

echo old version: $major_minor.$patch-$release
((patch++))
echo new version: $major_minor.$patch-$release

输出是:

old version: 0.0.2-pre
new version: 0.0.3-pre

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2020-11-22
    • 2015-01-30
    • 2023-03-30
    • 1970-01-01
    • 2020-05-13
    • 2015-03-21
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多