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