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 脚本。

官方资料