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

如何在Bash脚本中向文件顶部添加内容?sed命令尝试失败

解决sed修改文件时内容被清空的问题

兄弟,我太懂你踩的这个坑了!你执行命令后文件被清空,根本问题不在sed的替换逻辑,而是shell处理重定向的顺序——当你写sed ... READ_ME.md > READ_ME.md时,shell会先执行右边的重定向操作:它会先打开READ_ME.md并把它截断成空文件,然后才会让sed去读取这个已经空了的文件,最后sed输出空内容,自然文件就被清空了。

给你两个靠谱的解决方案,任选其一就行:

方案1:用sed的原地编辑功能(最便捷)

直接用sed的-i参数实现原地修改,绕开重定向的坑:

sed -i '1s/^/one /' READ_ME.md

小提醒:如果你用的是macOS或者BSD系统的sed,-i参数需要额外指定备份后缀(比如-i.bak会生成一个READ_ME.md.bak的备份文件),要是不想留备份,就这么写:

sed -i '' '1s/^/one /' READ_ME.md

方案2:用临时文件过渡(更稳妥)

如果怕原地编辑误操作搞坏文件,先把sed的输出写到临时文件,确认内容没问题后再替换原文件:

sed '1s/^/one /' READ_ME.md > temp_readme.md && mv temp_readme.md READ_ME.md

这种方式的好处是,万一你sed命令写错了,原文件还完好无损,你可以先打开临时文件检查内容,没问题再替换。

其实你之前的sed替换逻辑是对的——在第一行开头添加内容,只是栽在了shell重定向的顺序上,换上面两种方法就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:41:58