### sed 是什么？

`sed` 是 Linux/Unix 下的**流编辑器**，英文全称是 “stream editor”。
它可以一行一行地读取文本，然后按你的命令**批量查找、替换、插入、删除文本内容**，并且大多数操作都不需要打开编辑器，直接一条命令就能完成，非常适合批量处理日志、配置、数据等文本。

---

#### sed 的典型用途

* 查找并替换文本内容（批量修改文件内容）
* 按行删除或筛选内容
* 文本插入和追加
* 结合正则实现复杂文本处理

---

### 常用用法

#### 1. 文本查找并替换

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

**效果**：把 `file.txt` 每一行里首次出现的 `old` 字符串替换为 `new`，结果输出到屏幕上。

#### 2. 全部替换每行的匹配内容（加g）

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

**效果**：每一行所有的 `old` 都替换成 `new`。

#### 3. 直接修改原文件（加 -i）

```bash
sed -i 's/foo/bar/g' data.txt
```

**效果**：把 `data.txt` 里的 `foo` 都直接替换为 `bar`，并保存到原文件（**慎用**）。

#### 4. 删除指定行

```bash
sed '2d' test.txt
```

**效果**：删除第2行内容。

```bash
sed '2,4d' test.txt
```

**效果**：删除第2到第4行。

#### 5. 插入和追加内容

```bash
# 在第3行前插入内容
sed '3i\This is a new line' file.txt

# 在第5行后追加内容
sed '5a\append line' file.txt
```

---

### 常用参数和写法

| 写法           | 说明              |
| ------------ | --------------- |
| `s/原内容/新内容/` | 替换              |
| `g`          | 全局匹配（每行所有匹配都替换） |
| `-i`         | 直接修改原文件         |
| `Nd`         | 删除第N行           |
| `Ni\文本`      | 在第N行前插入文本       |
| `Na\文本`      | 在第N行后追加文本       |

---

### 典型实用场景

* 批量替换配置文件的参数
* 删除日志中敏感信息
* 自动化脚本批量处理数据格式
* 快速插入模板或批量修正格式

---

#### 讲解口播内容（配合分屏实例展示）

> sed 是 Shell 下的流式文本处理工具，可以让我们不用打开编辑器就能批量修改、替换、删除文本。最常见的就是 sed ‘s/旧内容/新内容/’ 文件名，可以一行命令完成全局替换，还能直接插入、删除、追加内容。批量改配置、批量修正数据、处理日志都很方便。

---

#### 实例代码

```bash
# 把所有的 old 替换成 new
sed 's/old/new/g' demo.txt

# 直接覆盖文件，批量修改配置
sed -i 's/127.0.0.1/localhost/g' config.ini

# 删除第10行
sed '10d' data.txt

# 在第5行前插入一句话
sed '5i\Insert this line' data.txt

# 只显示包含“error”的行（等价于 grep，但一般还是用 grep）
sed -n '/error/p' log.txt
```

