Linux sed 流编辑器实战 —— 批量修改文本、替换、删除、插入(运维必备)

Linux sed 流编辑器实战 —— 批量修改文本、替换、删除、插入(运维必备) 前言sed 是 Linux 最核心的非交互式流编辑器专门用来批量修改文本、替换字符串、删除行、插入行、注释配置不用手动打开文件一条命令搞定批量操作是运维、开发处理文件的神器。本文从基础语法到正则实战全覆盖工作高频场景看完彻底掌握 sed。一、sed 核心作用逐行读取文件内容 → 按规则处理 → 输出结果核心功能文本替换最常用删除指定行插入 / 追加行注释 / 取消注释配置批量修改文件内容配合管道过滤文本二、核心语法格式bash运行sed [选项] 指令 文件名高频必背选项-n只打印匹配到的行取消默认全部输出-i直接修改文件内容不加 - i 只预览不修改-e多条指令同时执行-r支持扩展正则表达式工作必备常用指令s替换字符串最常用d删除行p打印行a在行后追加i在行前插入三、基础实战最常用1. 文本替换核心s / 旧 / 新 /gbash运行# 把文件中的 old 替换成 new只预览不修改文件 sed s/old/new/g test.txt # 直接修改文件加 -i生产常用 sed -i s/old/new/g test.txt # 只替换每行第1个匹配 sed s/old/new/ test.txt2. 显示指定行配合 -nbash运行# 只显示第 10 行 sed -n 10p test.txt # 显示 5~10 行 sed -n 5,10p test.txt3. 删除指定行bash运行# 删除第 5 行 sed 5d test.txt # 删除空行 sed /^$/d test.txt # 删除包含关键词的行 sed /error/d test.txt4. 插入 / 追加行bash运行# 第 2 行 前面插入 一行内容 sed 2i 插入的内容 test.txt # 第 2 行 后面追加 一行内容 sed 2a 追加的内容 test.txt四、正则表达式实战核心进阶1. 常用正则元字符和 grep 通用^行开头$行结尾.任意单个字符*重复 0 次或多次.*匹配任意内容[0-9]匹配数字重复 1 次或多次需要-r|或条件需要-r2. 正则实战案例bash运行# 注释所有以 # 开头以外的行配置常用 sed -r s/^([^#])/#\1/ nginx.conf # 批量取消注释去掉行首 # sed -r s/^#// nginx.conf # 替换所有IP地址 sed -r s/[0-9]\.[0-9]\.[0-9]\.[0-9]/127.0.0.1/g test.txt # 删除以数字开头的行 sed /^[0-9]/d test.txt # 替换多个关键词a→Ab→B sed -e s/a/A/g -e s/b/B/g test.txt五、工作流水线实战最高频1. 批量注释配置文件bash运行sed -i s/^listen/#listen/ nginx.conf2. 批量取消注释bash运行sed -i s/^#listen/listen/ nginx.conf3. 批量替换端口号bash运行sed -i s/8080/80/g server.conf4. 删除日志中的空行 注释行bash运行sed -e /^$/d -e /^#/d app.log5. 实时日志过滤 替换bash运行tail -f app.log | sed s/ERROR/【错误】/g六、总结30 秒记住替换sed s/旧/新/g 文件直接改文件sed -i删除行sed /关键词/d删除空行sed /^$/d正则批量sed -r工作标配批量注释、替换配置、过滤日志