Linux sed命令详解:文本过滤与转换的利器
需积分: 37 36 浏览量
更新于2024-09-08
收藏 22KB DOCX 举报
"sed命令详解"
`sed` 是流编辑器(Stream Editor),它主要用于过滤和转换文本内容。这个工具允许用户对输入数据流(通常来自标准输入)进行一系列的编辑操作,而无需交互式地编辑文件本身。在Linux和Unix系统中,`sed` 是一种非常实用的命令行工具,尤其在批量处理文本文件时。
### SYNOPSIS
`sed` 的基本用法是:
```bash
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
```
这里,`[OPTION]` 是可选参数,`{script-only-if-no-other-script}` 是编辑指令,`[input-file]` 是输入文件名,如果不指定,则默认使用标准输入。
### 选项说明
- `-n, --quiet, --silent`: 这些选项抑制了默认的输出,只有当有特定的输出命令(如 `p`)时才会显示模式空间的内容。
- `-e script, --expression=script`: 添加一个或多个编辑指令。你可以多次使用 `-e` 选项来添加多个指令。
- `-f script-file, --file=script-file`: 从指定的文件中读取编辑指令,每个指令占据文件的一行。
- `-i[SUFFIX], --in-place[=SUFFIX]`: 在原文件上进行编辑。如果提供了 `SUFFIX`,会创建一个备份文件,其扩展名为 `SUFFIX`。
- `-r, --regexp-extended`: 使用扩展正则表达式,提供更强大的匹配功能。
### 地址定界
地址定界用于指定 `sed` 应作用于哪些行或行范围:
1. **空地址**:表示对所有行进行处理。
2. **单地址**:
- `#`: 指定第 `#` 行。
- `/pattern/`: 匹配到包含指定模式的行。
3. **地址范围**:
- `#,#`: 从第 `#` 行到第 `#` 行。
- `#,+#`: 从第 `#` 行开始,每隔 `+` 行处理一次。
- `#,/pat1/`: 从第 `#` 行到第一次出现 `pat1` 的行。
- `/pat1/,/pat2/`: 从第一次出现 `pat1` 的行到第一次出现 `pat2` 的行。
- `$`: 最后一行。
### 步进(步进地址)
步进允许你按照特定的行间隔处理行,例如:
- `1~2`: 所有奇数行。
- `2~2`: 所有偶数行。
### 编辑命令
- `d`: 删除模式空间的内容,即删除当前行。
- `p`: 显示模式空间中的内容,即打印当前行。
- `=`: 打印当前行号。
- `a\text`: 在行后面追加文本,支持使用 `\n` 实现多行追加。
- `i\text`: 在行前面插入文本,同样支持多行插入。
- `c\text`: 将匹配到的行替换为指定的文本。
- `r filename`: 从 `filename` 文件中读取文本并追加到当前行之后,用于合并文件。
### 示例应用
1. 删除所有包含特定模式的行:
```bash
sed '/pattern/d' input.txt
```
2. 在第5行后插入文本:
```bash
sed '5i\Inserted text' input.txt
```
3. 在所有行的末尾追加文本:
```bash
sed 's/$/appended text/' input.txt
```
`sed` 命令的灵活性和强大性使其成为处理文本文件的强大工具,无论是简单的查找替换,还是复杂的文本转换,都可以通过编写合适的脚本来完成。理解并熟练使用 `sed` 命令,可以极大地提高文本处理的效率。
1332 浏览量
760 浏览量
580 浏览量
930 浏览量
127 浏览量
点击了解资源详情
164 浏览量
old_brick
- 粉丝: 3
- 资源: 6