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

如何用正则提取分号前指定值及验证sed替换命令有效性

正则调整方案

你当前用的[^=]*;会把末尾的分号纳入匹配结果,两种调整方式可以只拿到value:

  • 用正向预查(需要正则引擎支持PCRE语法):[^=]*(?=;)
    这个规则只会匹配等号后、分号前的所有字符,分号不会被计入匹配结果。
  • 用分组捕获(兼容性更高,所有主流正则引擎都支持):([^=]*);
    你需要的value内容会存在第一个捕获组里,提取的时候直接取分组1的内容即可。

你给出的sed命令无法达到预期效果

原命令sed '/key/ s/[^=]*;/myValue/' fileName的问题在于:
它会匹配到等号之后所有非等号的字符直到分号(也就是示例里的value ;),替换后整行会变成key=myValue export key,不仅把value和分号之间的空格搞没了,还直接删掉了分号,不符合预期。

如果要实现替换value为myValue的需求,可以用sed的分组捕获功能,正确的命令如下:

sed '/key/ s/=\([^;]*\);/=myValue;/' fileName

如果你的value和分号之间像示例一样有空格,可以调整正则适配空格:

sed '/key/ s/=\([^; ]*\)[[:space:]]*;/=myValue ;/' fileName

执行后就可以得到key=myValue ; export key的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:03