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

如何在Windows 10的Bash中提取指定字符串内容

解决方法

你可以通过Bash的参数展开或者sed命令来精准提取需要的内容,以下是两种可行方案:

方案一:使用Bash参数分步替换

这种方式依赖Bash内置的字符串处理功能,不需要额外工具:

input="artifacts/online-order-api_sfscripts_artifact_1.5.6-6.zip"
# 移除开头的"artifacts/"前缀
temp=${input#artifacts/}
# 移除结尾的".zip"后缀
temp=${temp%.zip}
# 将中间的"_sfscripts_artifact_"替换为空格
result=${temp//_sfscripts_artifact_/ }
echo "$result"

方案二:使用sed命令一次性处理

sed适合批量处理字符串,通过多个替换规则完成需求:

input="artifacts/online-order-api_sfscripts_artifact_1.5.6-6.zip"
echo "$input" | sed -e 's/^artifacts\///' -e 's/_sfscripts_artifact_/ /' -e 's/\.zip$//'

为什么你的原方法失效?

你之前用的${input//[^0-9.-]/}是删除所有非数字、点、横杠的字符,这会把"online-order-api"里的字母全部过滤掉,同时保留了原字符串中多余的符号,所以得到了不符合预期的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:54:23