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 才真的改文件,慎用。