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

如何用正则实现特定文本查找替换?sed修改-sav后目标内容

问题描述

现有一段Bash代码,原本用于替换-sav与.test之间的内容:

test="-val https://www.randomurl.com -sav 1aFAd381cCCb86FD300e7a3A399a6014.test -speed 2 -save -delay 14"

test=$(sed 's/-sav *.*\./-sav 12345./g' <<< $test)

echo $test

# 当前输出:-val https://www.randomurl.com -sav 12345.test -speed 2 -save -delay 14

现在需要调整逻辑,将-sav后到-speed前的全部内容替换为12345.itWorks,期望最终变量值为:

test="-val https://www.randomurl.com -sav 12345.itWorks -speed 2 -save -delay 14"

解决方案

修改sed的正则匹配规则,精准选中-sav之后到下一个参数(以-开头)之前的内容,替换为目标字符串即可:

修改后的完整代码

test="-val https://www.randomurl.com -sav 1aFAd381cCCb86FD300e7a3A399a6014.test -speed 2 -save -delay 14"

# 匹配-sav后的非空格内容,替换为指定字符串
test=$(sed 's/-sav *[^ ]*/-sav 12345.itWorks/g' <<< "$test")

echo "$test"

输出结果

-val https://www.randomurl.com -sav 12345.itWorks -speed 2 -save -delay 14

正则说明

  • -sav *:匹配-sav和后面的任意空格
  • [^ ]*:匹配任意非空格字符(也就是-sav对应的参数值部分)
  • 整个正则会选中-sav及其后的参数值,替换为-sav 12345.itWorks

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:19:00