张芷铭的个人博客

sed 是流编辑器,逐行处理文本,支持查找、替换、删除、新增等操作,默认不修改原文件。

工作流程

读取 → 执行命令 → 输出 → 循环

基本语法

1
2
sed [选项] '编辑命令' 文件名
命令 | sed [选项] '编辑命令'

核心选项

选项说明
-n静默模式,仅输出匹配行
-i原地修改文件
-i.bak修改前备份
-e执行多个命令
-r启用扩展正则表达式

核心命令

命令说明
s替换
d删除
p打印
a行后追加
i行前插入
c整行替换

替换操作

1
2
3
4
sed 's/hello/hi/' file       # 替换每行第一个
sed 's/hello/hi/g' file      # 全局替换
sed 's/hello/hi/2' file      # 替换每行第2个
sed -i.bak 's/hello/hi/g' file  # 原地替换并备份

删除操作

1
2
3
sed '/delete/d' file   # 删除匹配行
sed '/^$/d' file       # 删除空行
sed '3d' file          # 删除第3行

提取匹配行

1
sed -n '/error/p' app.log  # 只显示包含 error 的行

新增插入

1
2
sed '/warning/a 需要关注' file   # 行后追加
sed '/error/i 严重错误:' file   # 行前插入

多命令组合

1
sed -e 's/hello/hi/g' -e '/delete/d' file

总结

  • 默认不修改原文件,-i 原地修改
  • s///g 全局替换最常用
  • -n + p 提取匹配行
  • -i.bak 修改前备份更安全

Comments