《每日一命令03:sed——批量替换从未如此简单》
先唠两句大家好啊我是阿垚。欢迎来到《每日一命令》第03期。上期聊了awk——按列处理文本的神器。今天聊另一个文本处理三剑客之一sed如果说grep是“找”awk是“分析”那sed就是“改”。 你是不是也这么干过要修改100个配置文件里的IP地址一个个打开一个个改要把一个2GB的SQL文件里的表名批量替换编辑器直接卡死要删除文件中的所有空行或注释行手动删到眼花这些场景sed都能一行搞定。 sed是什么sed Stream Editor流式编辑器。核心特点非交互式、批量处理、一行命令搞定全文修改。你不用打开文件不用手动翻页不用一个个替换。sed直接在你的命令行里完成所有修改。 最常用的5种姿势1. 基础替换bashsed s/旧文本/新文本/ file.txt把每行第一个匹配的旧文本换成新文本。2. 全局替换整行所有匹配bashsed s/旧文本/新文本/g file.txt加gglobal替换一行中所有匹配的文本。3. 直接修改文件危险bashsed -i s/旧文本/新文本/g file.txt-i表示直接修改原文件。⚠️强烈建议先备份4. 只修改指定行bashsed 3,5s/旧/新/g file.txt只修改第3到第5行。5. 删除行bashsed /匹配内容/d file.txt删除包含指定内容的行。比如删除所有空行bashsed /^$/d file.txt 进阶技巧高手必看替换并自动备份bashsed -i.bak s/旧/新/g file.txt修改前自动生成file.txt.bak备份文件。强烈推荐✨一次执行多个替换bashsed -e s/旧1/新1/g -e s/旧2/新2/g file.txt使用其他分隔符bashsed s|/旧路径/|/新路径/|g file.txt当替换内容包含/时可以用|或#做分隔符避免转义。在文件开头/末尾添加内容bashsed -i 1i\第一行内容 file.txt # 开头 sed -i $a\最后一行内容 file.txt # 末尾 真实场景场景1批量修改Nginx配置中的IPbashsed -i s/192.168.1.100/10.0.0.1/g /etc/nginx/conf.d/*.conf一条命令改完所有配置文件。场景2删除配置文件中的注释行bashsed -i /^#/d config.ini场景3给SQL文件中的表名加前缀bashsed -i s/user/tmp_user/g dump.sql场景4把日志文件中的日期格式从2026-04-16改为20260416bashsed -i s/-//g log.txt⚠️ 小贴士参数含义使用场景s/旧/新/替换最常用g全局替换一行中多次匹配-i直接修改文件正式修改先备份-i.bak修改并备份推荐写法数字指定行范围只改某几行d删除行删除空行或注释1i/$a首行插入/末尾追加添加内容 下期预告《每日一命令04find——文件查找你只知道用find . -name》评论区分享你最常用的sed命令。(•̀ᴗ•́)و——阿垚一个踩过2万次坑的“老”IT