linux 命令sed
简介
sed
(Stream Editor)是 Linux 中强大的流式文本处理工具,支持正则表达式,常用于文本替换、删除、插入等操作。以下是 sed
的核心用法和实用示例:
基础语法
sed [选项] '指令' 文件
sed [选项] -e '指令1' -e '指令2' 文件 # 多个指令
sed [选项] -f 脚本文件 文件 # 从文件读取指令
常用选项
选项 | 说明 |
---|---|
-n | 仅输出处理后的行(需配合 p 指令) |
-i | 直接修改原文件(谨慎使用) |
-e | 指定多个编辑指令 |
-r 或 -E | 启用扩展正则表达式(简化语法) |
核心操作指令
基本替换:
sed 's/apple/orange/' file.txt # 每行第一个 apple → orange
sed 's/apple/orange/g' file.txt # 全局替换(所有 apple → orange)
删除行:d
sed '/^$/d' file.txt
sed '/error/d' file.txt # 删除包含 error 的行
sed '5,10d' file.txt # 删除第 5-10 行
插入/追加行:i\
和 a\
sed '3i\插入内容' file.txt # 在第3行前插入
在行后追加
sed '/pattern/a\追加内容' file.txt # 在匹配行后追加
注意事项
-
转义特殊字符:若替换内容含
/
,&
,\
等,需用\
转义。 -
贪婪匹配:
sed
默认贪婪匹配,使用.*?
需谨慎(可用[^ ]*
限制)。 -
跨平台差异:macOS 的
sed
与 GNUsed
存在差异(如-i
必须指定备份后缀)。