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

如何用grep提取最后一个/与:之间的子字符串?

提取镜像名中最后一个/和:之间的子串

针对字符串 registry.gitlab.com/gitlab-org/cloud-native/mirror/images/busybox:latest,要提取最后一个/与:之间的busybox,可以用以下几种方法解决:

修正后的grep命令

你之前的正则用了.*贪婪匹配,会从第一个/开始匹配到:,把正则改成匹配非/字符即可:

echo "registry.gitlab.com/gitlab-org/cloud-native/mirror/images/busybox:latest" | grep -Po '(?<=/)[^/]+(?=:)'
  • [^/]+:匹配一个或多个不含/的字符,确保只取最后一个/之后的内容
  • 执行后直接输出busybox

awk方法

用/和:作为分隔符,取倒数第二个字段:

echo "registry.gitlab.com/gitlab-org/cloud-native/mirror/images/busybox:latest" | awk -F'[:/]' '{print $(NF-1)}'
  • -F'[:/]':指定分隔符为:或/
  • NF是总字段数,$(NF-1)就是倒数第二个字段,对应目标内容

sed方法

通过正则捕获目标内容并替换输出:

echo "registry.gitlab.com/gitlab-org/cloud-native/mirror/images/busybox:latest" | sed 's/.*\/\([^:]\+\):.*/\1/'
  • .*\/:匹配到最后一个/为止的所有内容
  • \([^:]\+\):捕获:之前的非:字符(即目标内容)
  • \1:输出捕获到的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:12:20