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

105 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1、`sed` 概览
`sed` 是 Linux 中非常常见的流编辑器stream editor它会按行读取输入内容然后对文本进行处理。
常见用途:
- 文本替换
- 删除指定行
- 打印指定范围内容
- 批量修改配置文件
## 2、基本特点
可以这样理解 `sed`
- 从文件或标准输入中逐行读取内容
- 对每一行按规则处理
- 默认把处理结果输出到标准输出
如果想直接修改原文件,通常需要使用 `-i`
## 3、常见选项
- `-r`:使用扩展正则表达式
- `-i`:直接修改文件内容
- `-n`:默认不输出,常配合 `p` 使用
## 4、最常见的替换命令
基本格式:
```shell
sed 's/旧内容/新内容/修饰符' 文件名
```
其中:
- `s`:表示 substitute替换
- `g`:表示行内全局替换
### 4.1 替换每行第一个匹配项
```shell
sed 's/root/admin/' file.txt
```
### 4.2 替换每行所有匹配项
```shell
sed 's/root/admin/g' file.txt
```
### 4.3 直接修改原文件
```shell
sed -i 's/root/admin/g' file.txt
```
## 5、常见示例
### 5.1 打印指定行
```shell
sed -n '1,5p' /etc/passwd
```
表示只打印第 1 到第 5 行。
### 5.2 删除指定行
```shell
sed '3d' file.txt
```
表示删除第 3 行后输出结果。
### 5.3 删除空行
```shell
sed '/^$/d' file.txt
```
### 5.4 替换配置项
```shell
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
```
这是运维里很常见的批量改配置写法。
## 6、实战建议
- 批量改配置时优先考虑 `sed -i`
- 涉及正则时可结合 `-r`
- 正式改文件前,建议先不加 `-i` 预览结果
- 对系统配置文件做替换前,最好先备份
## 7、小结
- `sed` 是按行处理文本的流编辑器
- `s/旧/新/g` 是最常用的替换格式
- `-i` 用于直接修改文件
- `-n` 常和 `p` 搭配控制输出
- 它非常适合批量替换和配置修改场景