sed是什么
时间: 2025-08-03 21:58:29 浏览: 13
### 3.1 `sed` 命令的作用
`sed`(stream editor)是一种流编辑器,广泛用于 Linux 系统中对文本进行流式处理。它可以对输入流(文件、管道、标准输入)进行编辑操作,如替换、删除、插入、追加、写入等,常用于脚本自动化、日志处理、文本批量修改等场景。
与交互式编辑器(如 `vim`)不同,`sed` 无需打开编辑器即可直接对文本进行修改,适合在非交互环境下执行自动化任务。它一次处理一行内容,在处理过程中将当前行存储在缓冲区(称为“模式空间”),然后应用指定的编辑命令,处理完成后输出结果,继续处理下一行,直到文件结束 [^4]。
### 3.2 `sed` 命令的基本语法
```bash
sed [选项] '命令' [输入文件]
```
其中:
- **选项**:用于控制 `sed` 的行为,如 `-n` 抑制默认输出,`-e` 多编辑命令,`-i` 直接修改原文件;
- **命令**:具体的文本处理操作,如 `s` 替换、`d` 删除、`i` 插入、`a` 追加等;
- **输入文件**:要处理的文本文件,若省略则从标准输入读取。
### 3.3 常见用法示例
#### 替换文本内容(s 命令)
使用 `s` 命令进行字符串替换,格式为:
```bash
sed 's/旧字符串/新字符串/标志' 文件
```
例如将文件中所有出现的 `old_text` 替换为 `new_text`:
```bash
sed 's/old_text/new_text/g' filename.txt
```
其中 `g` 表示全局替换,若省略则只替换每行第一个匹配项 [^2]。
#### 替换并修改原文件(-i 选项)
若需直接修改原文件,使用 `-i` 选项:
```bash
sed -i 's/old_text/new_text/g' filename.txt
```
该命令将直接在 `filename.txt` 中进行替换并保存 [^1]。
#### 删除指定行(d 命令)
删除文件中第 2 到第 5 行内容:
```bash
sed '2,5d' filename.txt
```
若配合 `-i` 可直接修改文件内容 [^1]。
#### 插入与追加内容(i\ 和 a\ 命令)
在第 4 行后追加新内容:
```bash
sed '4a\This is a new line' filename.txt
```
在第 1 行前插入文本:
```bash
sed '1i\This is the header' filename.txt
```
这两个命令分别使用 `a\`(追加)和 `i\`(插入)实现文本插入操作 [^3]。
#### 打印匹配行(p 命令)
打印包含 `root` 的行:
```bash
sed -n '/root/p' /etc/passwd
```
其中 `-n` 选项用于抑制默认输出,仅输出匹配的行 [^2]。
#### 多命令处理(-e 选项)
在同一命令中执行多个操作:
```bash
sed -e 's/old_text/new_text/' -e '/delete_line/d' filename.txt
```
该命令先替换 `old_text`,再删除包含 `delete_line` 的行 [^3]。
### 3.4 高级功能
#### 使用正则表达式
`sed` 支持正则表达式进行复杂匹配,例如忽略大小写匹配包含 `root` 的行:
```bash
sed -n '/root/Ip' /etc/passwd
```
其中 `I` 表示忽略大小写 [^2]。
#### 子串匹配与引用(\1、\2)
使用 `$$` 捕获子串,并在替换中引用:
```bash
sed 's/$$hello$$ $$world$$/\2 \1/' filename.txt
```
该命令将 `hello world` 替换为 `world hello` [^3]。
#### 从文件读取内容(r 命令)
将另一个文件的内容插入到指定行后:
```bash
sed '3r insert.txt' filename.txt
```
该命令在 `filename.txt` 的第 3 行后插入 `insert.txt` 的内容 [^3]。
#### 写入文件(w 命令)
将匹配行写入另一个文件:
```bash
sed -n '/error/w error.log' syslog.txt
```
该命令将 `syslog.txt` 中包含 `error` 的行写入 `error.log` 。
阅读全文
相关推荐



















