Sed 命令简介
sed (Stream Editor) 是一个强大的流式文本编辑器,它可以对文本进行增删改查等操作。主要特点:
- 逐行处理文本
- 支持正则表达式
- 支持多种编辑命令
- 可以直接修改文件
基本语法
1 | sed [选项] '命令' 文件 |
常用选项
-n
: 仅显示处理后的行-i
: 直接修改文件内容-e
: 执行多个命令-f
: 从文件读取命令-r
: 使用扩展正则表达式
基础命令详解
1. 查看命令 (p)
1 | # 打印第2行 |
2. 删除命令 (d)
1 | # 删除第3行 |
3. 替换命令 (s)
1 | # 基本替换 |
4. 插入和追加命令 (i/a)
1 | # 在第3行前插入 |
5. 修改命令 (c)
1 | # 替换第3行 |
高级用法
1. 多命令组合
1 | # 使用分号分隔多个命令 |
2. 使用地址范围
1 | # 从匹配行到文件末尾 |
3. 保持空间操作
1 | # 交换模式空间和保持空间 |
4. 条件分支
1 | # 使用标签和分支 |
实用示例
1. 文本处理
1 | # 删除注释和空行 |
2. 配置文件修改
1 | # 修改配置值 |
3. 日志处理
1 | # 提取时间戳 |
性能优化技巧
- 使用
-i
选项时创建备份
1 | sed -i.bak 's/old/new/g' file.txt |
- 处理大文件时使用流式处理
1 | cat largefile.txt | sed 's/old/new/g' > newfile.txt |
注意事项
- Mac OS 上需要使用
-i ''
进行原地修改 - 正则表达式中的特殊字符需要转义
- 默认情况下 sed 使用基本正则表达式
- 修改文件前建议先备份
调试技巧
- 使用
-n
选项查看处理结果
1 | sed -n 's/old/new/p' file.txt |
- 在复杂操作前先测试
1 | sed --debug 's/pattern/replacement/' file.txt |
总结
sed 是一个强大的文本处理工具,它的优势在于:
- 流式处理文本
- 强大的正则表达式支持
- 丰富的编辑命令
- 适合自动化处理
掌握 sed 可以大大提高文本处理效率,特别是在需要批量修改文件时。