sed全局替换需加g标志,-i修改原文件并推荐用-i.bak备份,支持行号、地址区间及正则范围限定,特殊字符需转义,加i标志可忽略大小写。

要用 sed 在 Linux 中全局替换每一行中的关键词,关键就两点:加 g 标志,并确认是否需要修改原文件。
基础全局替换(只输出,不改文件)
默认情况下,sed 's/旧词/新词/' 只替换每行第一个匹配项。要替换所有出现的关键词,必须在末尾加上 g(global):
-
sed 's/apple/orange/g' file.txt→ 把 file.txt 每行中所有apple替换为orange,结果打印到终端,原文件不变 - 注意:斜杠
/是分隔符;如果关键词本身含斜杠(如路径/usr/bin),可换用其他分隔符,比如sed 's|/usr/bin|/opt/bin|g' file.txt
直接修改原文件(带备份更安全)
加 -i 选项才能真正写入文件:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
sed -i 's/apple/orange/g' file.txt→ 原地替换,无备份,不可逆 - 推荐加后缀做备份:
sed -i.bak 's/apple/orange/g' file.txt→ 替换同时生成file.txt.bak,出错可还原
限定范围替换(按行号或地址区间)
不是整篇都换?可以精准控制作用范围:
- 只改第 5 行:
sed '5s/apple/orange/g' file.txt - 改第 3 到第 7 行:
sed '3,7s/apple/orange/g' file.txt - 从第一个空行开始,到含 “END” 的行结束:
sed '/^$/,/^END/s/apple/orange/g' file.txt
处理特殊字符和大小写
关键词含点、星号、括号等正则元字符时,需转义;如需忽略大小写,加 i 标志:
- 替换字符串
a.b*c(字面意义):sed 's/a\.b\*c/replacement/g' file.txt - 不区分大小写替换
hello:sed 's/hello/hi/gi' file.txt

















