GNU sed
基本语法(Synopsis)
sed [OPTION]... SCRIPT [FILE ...]
sed [OPTION]... -f SCRIPT_FILE [FILE ...][] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。
基本功能与推荐用法
sed 是流编辑器,适合按行选择、替换、删除和简单转换文本。
sed -n '1,20p' file.txt # 输出 1 到 20 行
sed -n '/BEGIN/,/END/p' file.txt # 输出匹配区间
sed 's/old/new/' file.txt # 每行替换第一个
sed 's/old/new/g' file.txt # 替换全部
sed '/^[[:space:]]*#/d' config # 删除注释行到输出
sed -E 's/([0-9]+)/[\1]/g' file.txt # 扩展正则
printf '%s\n' a b c | sed -n '2p'推荐:
- 默认只输出转换结果,不修改原文件,适合先预览。
- 原地修改前先检查输出,并使用带后缀的备份:
sed -i.bak 's/old/new/g' file.txt- 复杂的字段计算、分组或跨记录处理使用 awk、Perl 或专用语言。
示例中的选项、参数与子命令
本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。
| 语法元素 | 含义 |
|---|---|
-n | 关闭默认输出,通常与 p 命令配合。 |
p | 输出当前模式空间。 |
ADDRESS1,ADDRESS2 | 把命令限制在指定行或地址范围。 |
s/OLD/NEW/ | 把每行第一个 OLD 替换为 NEW。 |
g | 作为替换标志时,替换一行中的全部匹配。 |
d | 删除当前模式空间并开始下一轮。 |
-E | 使用扩展正则表达式。 |
-i[SUFFIX] | 原地修改文件;给出 SUFFIX 时保留备份。 |
-f SCRIPT_FILE | 从文件读取 sed 脚本。 |