sed通过重定向>可将处理结果写入新文件而不修改原文件;用w命令可保存匹配行或指定行范围;多步替换可用分号或-e一次性完成;需注意路径权限并先测试效果。

直接用重定向符号 > 把 sed 的输出写入新文件,原文件完全不受影响。
基础写法:重定向到新文件
sed 默认只把处理结果输出到屏幕(标准输出),不碰原文件。只要用 > 把输出接过去,就能存成新文件:
sed 's/旧文本/新文本/g' source.txt > new.txt- 这会把
source.txt中所有匹配处替换后,完整写入new.txt,source.txt保持原样 - 如果
new.txt已存在,会被覆盖;若想追加,用>>(但通常替换场景不用追加)
保存特定内容到新文件(非全文)
如果只想提取或保存满足条件的行(比如含关键词的行、某几行),可用 w 命令:
-
sed -n '/error/w errors.log' app.log→ 把所有含 “error” 的行写入errors.log -
sed -n '5,10w lines_5_to_10.txt' data.txt→ 把第 5 到第 10 行单独存为新文件 - -n 是关键:它抑制默认输出,只执行 w 指定的写入动作
多步替换再保存(避免多次读文件)
一次命令完成多个替换,并存为新文件,推荐用分号连接或 -e:
sed 's/foo/bar/g; s/hello/world/g' input.txt > output.txt- 或等价写法:
sed -e 's/foo/bar/g' -e 's/hello/world/g' input.txt > output.txt - 这样只读一次源文件,效率高,也更清晰
注意路径和权限
确保你对目标目录有写入权限,且新文件名不与重要文件冲突:
- 路径可写全:
sed 's/a/b/g' /etc/config.conf > /tmp/config_fixed.conf - 若提示 Permission denied,说明目标目录不可写,换路径或加 sudo(谨慎!)
- 建议先试运行不带重定向的命令,确认替换效果正确,再加 > 保存

















