wiki/运维/Linux/笔记/15.文本sed.md
2026-04-08 19:40:00 +08:00

1.9 KiB
Raw Permalink Blame History

1、sed 概览

sed 是 Linux 中非常常见的流编辑器stream editor它会按行读取输入内容然后对文本进行处理。

常见用途:

  • 文本替换
  • 删除指定行
  • 打印指定范围内容
  • 批量修改配置文件

2、基本特点

可以这样理解 sed

  • 从文件或标准输入中逐行读取内容
  • 对每一行按规则处理
  • 默认把处理结果输出到标准输出

如果想直接修改原文件,通常需要使用 -i

3、常见选项

  • -r:使用扩展正则表达式
  • -i:直接修改文件内容
  • -n:默认不输出,常配合 p 使用

4、最常见的替换命令

基本格式:

sed 's/旧内容/新内容/修饰符' 文件名

其中:

  • s:表示 substitute替换
  • g:表示行内全局替换

4.1 替换每行第一个匹配项

sed 's/root/admin/' file.txt

4.2 替换每行所有匹配项

sed 's/root/admin/g' file.txt

4.3 直接修改原文件

sed -i 's/root/admin/g' file.txt

5、常见示例

5.1 打印指定行

sed -n '1,5p' /etc/passwd

表示只打印第 1 到第 5 行。

5.2 删除指定行

sed '3d' file.txt

表示删除第 3 行后输出结果。

5.3 删除空行

sed '/^$/d' file.txt

5.4 替换配置项

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

这是运维里很常见的批量改配置写法。

6、实战建议

  • 批量改配置时优先考虑 sed -i
  • 涉及正则时可结合 -r
  • 正式改文件前,建议先不加 -i 预览结果
  • 对系统配置文件做替换前,最好先备份

7、小结

  • sed 是按行处理文本的流编辑器
  • s/旧/新/g 是最常用的替换格式
  • -i 用于直接修改文件
  • -n 常和 p 搭配控制输出
  • 它非常适合批量替换和配置修改场景