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

如何在Linux Bash的sed命令中正确使用变量?

问题解决:sed中使用变量匹配正则的错误修正

你的问题出在sed正则的解析上,原命令里的正则没有被正确识别,导致替换逻辑失效。

错误原因

原脚本存在两个核心问题:

  1. 若使用BSD sed(比如macOS自带版本),基础正则模式不支持\|作为“或”运算符,必须启用扩展正则才能用|实现多选项匹配。
  2. 原命令用双引号包裹sed脚本时,bash对正则里的转义字符处理会干扰sed解析,导致括号和“或”运算符未被正确识别。

正确解决方案

方案1:使用扩展正则(推荐,语法更简洁)

修改变量定义,去掉|前的转义符,给sed添加-E选项启用扩展正则模式:

adjectives="delicious|gross|bearable|yummy"
sed -E "s/($adjectives)\.//g" input.txt > output.txt

方案2:保留基础正则,修正bash解析问题

用单引号包裹sed的正则模板,仅在变量部分使用双引号,避免bash干扰转义字符的传递:

adjectives="delicious\|gross\|bearable\|yummy"
sed 's/\('"$adjectives"'\)\.//g' input.txt > output.txt

执行任意一种方案后,output.txt都会得到期望结果:

banana
apple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:51:41