什么是sed?
sed(Stream Editor)是Linux/Unix系统中用于处理和转换文本的非交互式流编辑器。它逐行读取输入流(文件或标准输入),对每一行执行指定的编辑操作,并将结果输出到标准输出。
基本语法
sed [选项] '命令' 文件
常见选项:
-n:抑制默认输出,仅打印匹配行-i:直接修改原文件(慎用!)-e:允许多个命令-f:从脚本文件中读取命令
常用命令示例
1. 替换文本
sed 's/old/new/g' file.txt
将每行中的所有“old”替换为“new”。
2. 删除行
sed '2d' file.txt # 删除第2行 sed '/pattern/d' file.txt # 删除包含pattern的行
3. 打印特定行
sed -n '5p' file.txt # 打印第5行 sed -n '/error/p' file.log # 打印包含error的行
4. 插入与追加
sed '2i\插入的内容' file.txt # 在第2行前插入 sed '2a\追加的内容' file.txt # 在第2行后追加
高级技巧
结合正则表达式、多命令组合(使用-e或分号)、就地编辑(-i)等,可实现复杂文本处理任务。
sed -i.bak 's/foo/bar/g' config.conf # 修改并备份原文件