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

Shell中使用sed变量替换含空格字符串时[[:space:]]未生效如何解决?

错误原因

  • [[:space:]]是正则匹配语法,仅在查找模式中用于匹配空白字符,不能写在替换内容里,替换内容直接写真实空格即可
  • 单引号包裹的sed表达式无法展开shell变量,额外使用eval属于冗余操作,还会引入命令注入风险

修正后脚本

#!/bin/sh

# 查找模式保留正则写法,匹配任意空白分隔的目标串
ORI_LINE="is[[:space:]]teddy[[:space:]]bear"
# 替换内容直接写最终需要的字符串即可
NEW_LINE="is sleepy bear"

# 用双引号包裹sed表达式,让变量正常展开
sed -i -e "s/$ORI_LINE/$NEW_LINE/g" ./hello.txt

兼容提示

如果你在MacOS系统运行,sed的-i参数需要额外传空字符串作为备份后缀,命令改为:

sed -i '' -e "s/$ORI_LINE/$NEW_LINE/g" ./hello.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:09:01