sed 流编辑器实战:批量改配置与日志清洗的 8 个常用姿势

举报
yd_282444815 发表于 2026/11/09 09:19:32 2026/11/09
【摘要】 在 Linux 服务器上做运维,经常要批量改几十台机器的配置文件,或者从日志里抹掉敏感信息。打开编辑器一行行改既慢又容易出错,这时就该让 sed 出场了。sed 是流编辑器的缩写,按行读取、按规则处理、全程无需交互,非常适合写进脚本批量执行。下面分享 8 个常用姿势。 一、基本语法通用写法是 sed [选项] '命令' 文件。默认不修改原文件,只打印处理结果;确认无误后再加 -i 原地修改。...

在 Linux 服务器上做运维,经常要批量改几十台机器的配置文件,或者从日志里抹掉敏感信息。打开编辑器一行行改既慢又容易出错,这时就该让 sed 出场了。

sed 是流编辑器的缩写,按行读取、按规则处理、全程无需交互,非常适合写进脚本批量执行。下面分享 8 个常用姿势。

一、基本语法

通用写法是 sed [选项] '命令' 文件。默认不修改原文件,只打印处理结果;确认无误后再加 -i 原地修改。先看再改,是避免误操作的第一道防线。例如:

sed -n '10,20p' nginx.conf

二、删除行

地址可以是行号、范围或正则:

sed '/^$/d' app.conf
sed '/^#/d' app.conf
sed '5,$d' app.conf

三、替换文本

s 是用得最多的命令,格式为 s/旧内容/新内容/。分隔符不必是斜杠,路径里斜杠多时换成 # 更清爽:

sed 's/80/8080/g' nginx.conf
sed 's#/var/www/html#/data/www#g' nginx.conf

四、原地修改

确认无误后加 -i 改写文件,备份一起写进命令:

sed -i 's/listen 80;/listen 8080;/g' nginx.conf
sed -i.bak 's/debug=false/debug=true/' app.conf

改前自动生成 .bak 备份,改完用 diff 对照确认。

五、插入与追加

a 在行后追加,i 在行前插入,c 整行替换;配合正则地址可以只在匹配行后追加:

sed '3a 新的一行' file.txt
sed '/\[server\]/a # 新增配置段' nginx.conf

六、地址范围

地址支持行号、范围、正则和步长,灵活组合能精准定位:

sed -n '1,10p' access.log
sed -n '/ERROR/,/INFO/p' app.log
sed -n '2~2p' data.txt

七、日志清洗

线上日志常混着手机号、Token,分析前先脱敏:

sed -E 's/1[3-9][0-9]{9}/138****0000/g' access.log
sed -E 's/(token=)[^&]*/\1***/g' access.log

第一条把手机号替换为掩码,第二条用 \1 引用分组 (token=),只替换参数值。

八、命令组合

多个步骤用 -e 串起来一次完成:

sed -e '/^$/d' -e 's/old/new/g' app.conf

注意事项

-i 不可逆,先预览再改,重要文件先备份;正则特殊字符要转义;macOS 的 BSD sed 与 GNU sed 在 -i 用法上有差异;sed 按行处理,跨行文本(如 JSON、XML)应换 jq 或 Python。

总结:查看用 p、删除用 d、替换用 s、改文件加 -i、组合用 -e,批量改配置、清洗日志基本上一条命令就能解决。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。