如何在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
相关产品推荐
相关产品推荐

