

当你需要把一个文件里几百个 IP 批量替换,
难道一个个手改吗?
sed 是 Linux 三剑客之一,
专门用来做“文本流编辑”。
sed 全称 stream editor —— 流编辑器。
sed是一种流编辑器,它一次处理一行内容, 将这行放入缓存(存区空间称为:模式空间),然后才对这行进行处理,处理完后,将缓存区的内容发送到终端。
它的特点:
• 不打开文件
• 一行一行处理
• 自动输出结果

演示
echo "hello world" | sed 's/world/linux/'
讲解:
• s = substitute 替换
• world = 原内容
• linux = 新内容
输出:
hello linux

一句话总结:
sed 最核心的功能就是 —— 替换。
准备测试文件:
cat test.txt 内容:
Tom 20
Jack 25
Tom 30
替换第一个 Tom:
sed 's/Tom/Lucy/' test.txt 
你会发现:
每一行只替换第一个匹配。
全部替换:
sed 's/Tom/Lucy/g' test.txt g = global 全局替换。

只讲最实用的 4 个。
直接修改文件(非常重要)
sed -i 's/20/21/' test.txt ⚠️ -i 表示直接修改原文件。

删除包含某关键词的行:
sed '/Jack/d' test.txt
d = delete

只打印指定行:
sed -n '2p' test.txt
• n = 取消默认输出
• p = print

一句总结:
sed 不只是替换,还能删、选、改。
插入空行
sed G -i sed.txt # G 每行后面添加一个空行
# -i 修改源文件

sed -i '/^$/d' sed.txt 
总结一下:
sed 的核心是:
• s 做替换
• g 全局
• -i 直接修改
• d 删除
grep 负责筛选,
awk 负责按列处理,
sed 负责批量修改。