sed 命令详解
基本概念
sed(Stream EDitor)是一种流编辑器,用于对输入流(文件或管道)进行基本的文本转换。它是 Unix/Linux 系统中的重要工具,通常用于:
- 自动编辑文件
- 简化对多个文件的重复编辑
- 编写转换程序
基本语法
1 | sed [选项] '命令' 输入文件 |
常用选项:
-n:禁止自动打印模式空间-e:允许多个编辑命令-f:从文件中读取 sed 脚本-i:直接修改文件内容(危险但常用)-r:使用扩展正则表达式
常用命令
替换命令
1 | sed 's/原字符串/新字符串/[标志]' 文件名 |
标志说明:
示例:
1 | # 替换文件中的 "apple" 为 "orange" |
删除命令
1 | # 删除第3行 |
打印命令
1 | # 打印第5行 |
插入和追加
1 | # 在第3行前插入内容 |
其他常用操作
1 | # 替换时保留部分原内容(使用 & 符号) |
高级用法
使用正则表达式
1 | # 替换所有数字为 # |
使用保持空间
保持空间(hold space)是 sed 的另一个缓冲区,可以用来临时存储内容:
1 | # 交换模式和保持空间内容 |
分支和标签
1 | # 跳过某些行的处理 |
实际应用示例
批量重命名文件:
1
ls *.txt | sed 's/\(.*\)\.txt/mv & \1.bak/' | sh
提取日志中的特定信息:
1
cat server.log | sed -n '/ERROR/,/DEBUG/p'
转换文件格式:
1
sed 's/^/ /' input.txt > indented.txt # 添加缩进
处理 CSV 文件:
1
sed 's/,/ /g' data.csv # 将逗号替换为空格
注意事项
sed 是一个强大的文本处理工具,熟练掌握可以极大提高文本处理效率。