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

如何在Bash中用单行或正则提取URL两连字符间的指定内容?

Bash单行/正则提取URL双连字符间的内容

需求:从URL http://abc-124-001.portal-ex.xyz-xyz.com:8091/ 中提取始终位于两个连字符之间的124,已有分步实现,以下是几种更简洁的单行或正则实现方式:

方法1:Bash参数扩展+cut单行实现

直接利用Bash的参数扩展截断前缀,再用cut分割取第一部分:

f=http://abc-124-001.portal-ex.xyz-xyz.com:8091/ && echo "${f#*-}" | cut -d'-' -f1

输出:124

方法2:Bash内置正则匹配(推荐,无需外部工具)

Bash 3.0及以上支持正则匹配,直接捕获目标内容:

f=http://abc-124-001.portal-ex.xyz-xyz.com:8091/ && [[ $f =~ -([0-9]+)- ]] && echo "${BASH_REMATCH[1]}"

如果目标内容不只是数字,可把[0-9]+改成[^-]+匹配任意非连字符内容:

f=http://abc-xxx-001.portal-ex.xyz-xyz.com:8091/ && [[ $f =~ -([^-]+)- ]] && echo "${BASH_REMATCH[1]}"

输出:xxx

方法3:sed正则替换

适合管道场景,跨shell兼容性好:

echo "http://abc-124-001.portal-ex.xyz-xyz.com:8091/" | sed -E 's/.*-([^-]+)-.*/\1/'

输出:124

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:35:22