linux中用sed同时执行多个替换命令有三种方式:一是用-e选项串联多条命令,适合简单线性替换;二是写成sed脚本文件后用-f调用,适合复杂或需复用场景;三是单引号内用分号分隔,兼容性更强。

Linux 中用 sed 同时执行多个替换命令,核心是避免重复读取文件、减少 I/O 开销,并确保逻辑清晰、顺序可控。有三种常用且稳定的方式,按适用场景推荐如下:
用 -e 选项串联多条替换命令
最直接、最常用的方法,适合规则不多(3–5 条)、逻辑线性、无需复用的场景。
- 每条替换用单独的
-e参数引入,命令顺序即执行顺序 - 语法简洁,无需额外文件,适合终端快速操作或脚本内嵌
- 示例:把 config.conf 中的端口、主机名和协议同时更新
写成 sed 脚本文件批量执行
当替换规则较多(5 条以上)、需复用、或含复杂逻辑(如条件跳转、分支)时,推荐脚本方式。
- 新建一个
replace.sed文件,每行一条替换命令(可加注释) - 用
-f选项调用,语义清晰,便于版本管理与调试 - 支持
:label、b、t等高级控制,适合生产环境维护
s/DEBUG=true/DEBUG=false/g
s/log_level=info/log_level=warn/g
/^#.*cache/s/^#//
s/\bmax_conn\b/conn_limit/g
sed -i -f replace.sed app.conf
用单引号内换行+分号分隔(兼容性更强)
适用于某些老版本 shell 或受限环境(如 BusyBox),不依赖 -e 或外部文件。
- 所有命令写在一对单引号内,用分号
;分隔 - 注意:不能换行后直接回车,必须用反斜杠
\续行,或全部写在一行 - 可读性略差,但移植性好,适合嵌入到最小化系统脚本中
注意事项
无论哪种方式,都要留意几点:
- 替换顺序影响结果:后一条可能匹配前一条修改后的文本,必要时调整顺序或加
\b单词边界 - 特殊字符(如
/、&、$)需转义或换分隔符,例如s#/usr/bin#/opt/bin#g - 建议先用
sed '...' file(不加-i)预览效果,确认无误再加-i - 重要文件务必加备份,如
sed -i.bak '...' file,生成file.bak











