gpt4 book ai didi

regex - 在 bash 中使用正则表达式提取版本

转载 作者:行者123 更新时间:2023-11-29 09:19:23 27 4
gpt4 key购买 nike

我需要做的就是从以下文件中提取版本控制信息:

 my_archive_1.1.1.201_x86_64.tgz

我正在尝试提取 1.1.1 版本号和 201 版本号。通常我将 python 用于这些目的,但我被要求不要这样做。我如何仅使用 bash 来做到这一点?文件名将始终采用

形式
([A-Za-z_]+)_([0-9]+\.[0-9]+\.[0-9]+)\.([0-9]+)_x86_64\.tgz

分组在括号中。如果你从 1 开始数,我需要第二组和第三组。

最佳答案

使用纯 BASH:

s='my_archive_1.1.1.201_x86_64.tgz'
[[ $s =~ ^[^_]+_[^_]+_(([^.]+\.){2}[^.]+)\.([^_]+) ]] && \
echo "${BASH_REMATCH[1]}, ${BASH_REMATCH[3]}"

输出:

1.1.1, 201

使用您自己的正则表达式:

[[ $s =~ ([A-Za-z_]+)_([0-9]+\.[0-9]+\.[0-9]+).([0-9]+)_x86_64\.tgz ]] && \
echo "${BASH_REMATCH[2]}, ${BASH_REMATCH[3]}"

关于regex - 在 bash 中使用正则表达式提取版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com