什么是 sed?
sed(Stream Editor)是 Linux/Unix 系统中用于对输入流(文件或管道)进行基本文本转换的非交互式编辑器。它常用于脚本中自动化文本处理任务。
常用 sed 参数
- -n, --quiet / --silent:抑制默认输出,仅打印匹配
p命令的内容。 - -e script:添加要执行的脚本命令(可多次使用)。
- -f script-file:从指定文件中读取 sed 脚本。
- -i[SUFFIX]:直接修改文件内容(可选后缀用于备份原文件)。
- -r / --regexp-extended:启用扩展正则表达式(在某些系统中为
-E)。
基本语法示例
# 替换每行第一个 "foo" 为 "bar"
sed 's/foo/bar/' file.txt
# 全局替换所有 "foo" 为 "bar"
sed 's/foo/bar/g' file.txt
# 仅显示包含 "error" 的行(配合 -n)
sed -n '/error/p' log.txt
# 删除空行
sed '/^$/d' file.txt
# 直接修改文件(慎用!)
sed -i 's/old/new/g' config.conf
实用技巧
sed 支持地址范围(如 1,5s/.../)、多命令组合(用 ; 分隔)以及与管道结合使用,是 Shell 脚本中不可或缺的文本处理工具。