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

Linux下能否用单条sed命令实现行内子串修改并保留全文件?

单条sed命令实现目标的方案

当然可以,你之前的命令问题出在-n和p的组合上:-n会让sed默认不输出任何行,只有遇到p命令才打印,所以最终只保留了被修改的行。

正确的单条命令非常简单:

sed -i '/foo/s/bar/bah/' test.txt

命令解释

  • -i:直接修改源文件(如果担心误操作,可写成-i.bak,会生成一个名为test.txt.bak的备份文件)
  • /foo/:仅对包含foo的行执行后续操作
  • s/bar/bah/:在匹配到的行内,把第一个bar替换成bah(如果要替换行内所有匹配的bar,加个g改成s/bar/bah/g)

执行后你的test.txt内容会变成:

foo bah
goo bar

如果想先预览修改效果而不改动原文件,去掉-i直接运行:

sed '/foo/s/bar/bah/' test.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:05:55