You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中从指定链接提取1.2-dirty版本子串?

提取链接中的版本字符串解决方案

以下几种命令行方法可以帮你从目标链接里提取出1.2-dirty:

  • 方法一:用sed正则替换
    直接通过正则匹配并提取目标部分,命令如下:

    sed -E 's/.*-(.*)\.tgz/\1/' version.txt
    

    原理:正则表达式.*-(.*)\.tgz会匹配最后一个-之前的所有内容以及.tgz后缀,最终只输出中间捕获的1.2-dirty。

  • 方法二:用grep精准匹配
    利用grep的Perl正则特性,只输出需要的片段:

    grep -oP '.*-\K.*(?=\.tgz)' version.txt
    

    原理:.*-\K会忽略最后一个-之前的所有内容,(?=\.tgz)是正向预查,确保匹配的是.tgz前面的部分,-o参数让grep仅输出匹配到的内容。

  • 方法三:awk多步分割处理
    先提取文件名,再分割提取目标字段:

    awk -F/ '{print $NF}' version.txt | awk -F- '{print $NF}' | sed 's/.tgz//'
    

    原理:第一个awk按/分割,取最后一段(即文件名docker-image-internal-1.2-dirty.tgz);第二个awk按-分割取最后一段;最后用sed去掉.tgz后缀。

  • 方法四:basename结合cut
    先去掉路径和后缀,再分割取目标段:

    basename $(cat version.txt) .tgz | cut -d'-' -f4
    

    原理:basename命令先移除路径和.tgz后缀,得到docker-image-internal-1.2-dirty;再用cut按-分割,取第4个字段(前面三个-分隔的部分为docker、image、internal)。

内容的提问来源于stack exchange,提问作者khameb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:08:26