sed -i:命令行直接原地编辑文件

用 sed -i 在 Linux 上对单个或多个文件做查找替换,配合 -i.bak 保留备份。

Linuxsed 文本替换替换编辑中风险
执行 sed -i 's/旧/新/g' 文件 即可直接改写文件;用 sed -i.bak 's/旧/新/g' 文件 可先保留一份备份。

01命令

命令
$ sed -i 's/old-domain.com/new-domain.com/g' *.conf

02作用说明

s/// 替换广为人知,但真正让 sed 从过滤器变成编辑工具的是 -i:它直接改写磁盘上的文件而不是输出到 stdout。GNU sed 允许给 -i 附加后缀(-i.bak),先保留原始文件——这是非交互编辑最接近“撤销”的手段。表达式还支持地址范围(sed -i '10,20s/x/y/'),也可以一次对多个文件批量修改配置。

03风险

风险中风险
!注意: 不带备份后缀的 sed -i 无法撤销——表达式写错会悄悄毁掉所有被处理的文件;另外 GNU 与 BSD sed 的 -i 语法不兼容。

04撤销

撤销
$ git checkout -- *.conf  (or restore from the .bak created by sed -i.bak)

05来源

  • Sed — ArchWiki
    Arch Linux · community · 2026-09-17
    依据: Examples of GNU sed -i in-place editing and -i.bak backup extension usage
  • sed(1P) — POSIX manual page
    man7.org · technical · 2026-09-17
    依据: Documents the s/re/replacement/flags substitution, /g global flag, and address ranges

最后验证: 2026-09-17 · 分类: 文件与文件夹