什么是 sed?
sed(stream editor)是一个非交互式的文本处理工具,常用于对输入流(文件或管道)进行基本的文本转换。它特别适合在 shell 脚本中自动化文本处理任务。
常用参数说明
-n:抑制默认输出,仅打印被处理的行(配合p命令使用)。-e:允许多个编辑命令(例如:sed -e 's/foo/bar/' -e 's/baz/qux/')。-f scriptfile:从指定文件中读取 sed 命令。-i:直接修改原文件(慎用!建议先备份)。-r或--regexp-extended:启用扩展正则表达式(GNU sed)。
基本用法示例
1. 替换文本
sed 's/old/new/g' file.txt
将 file.txt 中每行所有 old 替换为 new。
2. 删除空行
sed '/^$/d' file.txt
3. 打印特定行(第5行)
sed -n '5p' file.txt
4. 原地修改文件
sed -i 's/foo/bar/g' file.txt
小贴士
- sed 默认不修改原文件,除非使用
-i。 - 使用单引号包裹命令可避免 shell 解释特殊字符。
- 多命令可用分号
;连接,如sed '1d;s/foo/bar/g'。