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

使用sed替换引号内指定字符串失败的问题求助

使用sed替换引号内指定字符串失败的问题求助

兄弟,你这问题我太熟了——单引号嵌套冲突搞的鬼!

你看你写的sed命令:

sed -i 's/length_s = '12h'/length_s = '3h'/g' my_files

shell在解析的时候,会把第一个'当作sed命令的起始标记,当它遇到'12h'里的第一个'时,就会误以为sed命令已经结束了,剩下的12h'/length_s = '3h'/g' my_files就变成了一堆无意义的乱码,shell根本不知道怎么执行,所以命令自然跑不通。

给你几个靠谱的解决办法:

  • 方法一:用双引号包裹整个sed命令
    因为双引号里允许直接使用单引号,shell不会提前截断命令,这样写最直观:

    sed -i "s/length_s = '12h'/length_s = '3h'/g" my_files
    
  • 方法二:在单引号内拼接单引号
    如果习惯用单引号包裹sed命令,可以用'\''来表示一个单引号(原理是:关闭当前单引号→转义输出一个单引号→重新打开单引号),写法是这样:

    sed -i 's/length_s = '\''12h'\''/length_s = '\''3h'\''/g' my_files
    
  • 方法三:精准匹配引号内的内容(简化版)
    如果你的场景里只需要把length_s后的'12h'换成'3h',也可以把匹配范围缩小到引号内的内容,写法更简洁:

    sed -i "s/'12h'/'3h'/g" my_files
    

    当然这个前提是文件里没有其他地方出现'12h',避免误替换。

试试上面的方法,应该就能解决问题啦!

备注:内容来源于stack exchange,提问作者Rabah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:53:19