如何使用grep提取单行文件中固定键对应的可变版本号数值?
提取单行文件中的版本号解决方案
你的命令执行失败,核心原因是正则表达式和文件名之间缺少空格——grep把带引号的正则和_version.py连在一起当成了搜索模式,自然无法匹配到目标内容。
以下是几种可行的解决方法:
方法一:修正后的grep命令
new_tag=$(grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' _version.py)
-E:启用扩展正则表达式,支持+这类量词-o:只输出匹配到的内容,而不是整行- 注意正则表达式和文件名
_version.py之间必须有空格
方法二:用awk直接提取双引号内内容
如果文件只有__version__="x.x.x"这一行,用awk可以更简单地提取:
new_tag=$(awk -F'"' '{print $2}' _version.py)
以双引号作为分隔符,直接取第二个字段,不需要关心版本号的具体数字格式。
方法三:用sed精准匹配替换
new_tag=$(sed 's/^__version__="\([0-9]\+\.[0-9]\+\.[0-9]\+\)"$/\1/' _version.py)
通过正则捕获双引号内的版本号部分,替换整行为捕获到的内容,输出结果就是版本号。
内容的提问来源于stack exchange,提问作者MikiBelavista
相关产品推荐
相关产品推荐

