首页 / Linux 命令行入门教程 / 28. sed 替换与编辑

Linux 命令行入门教程

28. sed 替换与编辑

本教程共 90 篇 · 第 28 篇

28. sed 替换与编辑

sed 是流编辑器,逐行处理文本。它最常被用来做”查找替换”,而且不必打开文件。

最基本的替换写法:把每行的第一个 old 换成 new

sed 's/old/new/' file.txt

注意 s 是替换动作,/ 是分隔符,三截分别是「旧/新/旗标」。

全局替换 g

默认每行只换第一处。加 g(global)才替换整行所有匹配:

sed 's/old/new/g' file.txt

指定第几处

想只换第 2 个匹配,用 /2

sed 's/old/new/2' file.txt

删除行 d

d 命令删除匹配的行。删掉所有空行:

sed '/^$/d' file.txt

/^$/ 是正则(见 §27),表示”行首紧接行尾”即空行。

-i 原地修改文件

前面这些都不会动原文件,结果只显示在屏幕。要真写回文件,加 -i

sed -i 's/old/new/g' file.txt
Warning

sed -i 会直接改写原文件,没有确认、无法撤销。 第一次用某条规则,先不加 -i 在屏幕上确认结果,再补 -i 执行。重要文件记得先备份。

配合管道

sed 也常接在管道后处理流数据:

cat file.txt | sed 's/old/new/g'

小结:sed 's/旧/新/g' 做替换,g 表示整行全换,d 删行。-i 才真的改文件,慎用。