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

使用SED正则表达式替换JSON值时遇无效前置正则表达式错误

sed替换JSON值正则报错的解决方法

错误根源

你使用的(?<="applicationUrl": ")是PCRE专属的正向回溯断言,但sed的POSIX扩展正则(-E参数)不支持这类断言语法,这就是触发sed: -e expression #1, char 60: Invalid preceding regular expression错误的原因。

正确的sed命令写法

不用断言,改用捕获组匹配并保留固定前缀,仅替换目标值部分:

基础写法(斜杠分隔)

sed -E 's/("applicationUrl": ")[^"]+/\1http:\/\/0.0.0.0:80/' input.json

更简洁的写法(哈希分隔,无需转义斜杠)

sed -E 's#("applicationUrl": ")[^"]+#\1http://0.0.0.0:80#' input.json

命令解释

  • ("applicationUrl": "):将"applicationUrl": "捕获为分组1,替换时用\1引用该内容
  • [^"]+:匹配原URL的所有非双引号字符(即要替换的旧值)
  • 替换段\1http://0.0.0.0:80:保留前缀,拼接新URL

最终效果

执行后JSON会更新为:

{
  "profiles":{
    "http":{
      "applicationUrl":"http://0.0.0.0:80"
    }
  }
}

进阶建议

如果频繁处理JSON,优先用专门的JSON工具jq,比sed正则更可靠,避免JSON格式变化导致的匹配失败:

jq '.profiles.http.applicationUrl = "http://0.0.0.0:80"' input.json

内容的提问来源于stack exchange,提问作者Luis Carlos Aveiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:32:47