Linux三剑客:sed
释怀爱编程
2026年02月23日 22:02

当你需要把一个文件里几百个 IP 批量替换,

难道一个个手改吗?

sed 是 Linux 三剑客之一,

专门用来做“文本流编辑”。


🧠 sed 是什么

sed 全称 stream editor —— 流编辑器。

sed是一种流编辑器,它一次处理一行内容, 将这行放入缓存(存区空间称为:模式空间),然后才对这行进行处理,处理完后,将缓存区的内容发送到终端。

它的特点:

• 不打开文件

• 一行一行处理

• 自动输出结果



演示

echo "hello world" | sed 's/world/linux/'

讲解:

• s = substitute 替换

• world = 原内容

• linux = 新内容

输出:

hello linux

一句话总结:

sed 最核心的功能就是 —— 替换。

🔁 替换操作

准备测试文件:

代码块
Shell
自动换行
复制代码
cat test.txt
复制成功

内容:

Tom 20

Jack 25

Tom 30

替换第一个 Tom:

代码块
Shell
自动换行
复制代码
sed 's/Tom/Lucy/' test.txt
复制成功

你会发现:

每一行只替换第一个匹配。

全部替换:

代码块
Shell
自动换行
复制代码
sed 's/Tom/Lucy/g' test.txt
复制成功

g = global 全局替换。

⚙️ 常用参数

只讲最实用的 4 个。

直接修改文件(非常重要)

代码块
Shell
自动换行
复制代码
sed -i 's/20/21/' test.txt
复制成功

⚠️ -i 表示直接修改原文件。

删除包含某关键词的行:

sed '/Jack/d' test.txt

d = delete

只打印指定行:

sed -n '2p' test.txt

• n = 取消默认输出

• p = print

一句总结:

sed 不只是替换,还能删、选、改。

🚀 实战案例

示例: 给每一行添加空行

插入空行

代码块
PlainText
自动换行
复制代码
sed G -i sed.txt
复制成功

# G 每行后面添加一个空行

# -i 修改源文件

示例: 删除所有的空行​​​​​​​

代码块
Shell
自动换行
复制代码
sed -i '/^$/d' sed.txt
复制成功

🎯 总结

总结一下:

sed 的核心是:

• s 做替换

• g 全局

• -i 直接修改

• d 删除

grep 负责筛选,

awk 负责按列处理,

sed 负责批量修改。