> 文本处理与搜索 > sed

sed 命令指南:流编辑器的使用

`sed` 命令(流编辑器)是一个强大的非交互式文本处理工具,用于编辑文本流(通过文件或管道传递的输入)。它可以高效地执行文本搜索、替换、删除或插入等操作,而无需打开文件。它在脚本中被广泛用于自动化文本转换。通过本指南,您可以学习 `sed` 命令的基本用法以及利用正则表达式的高级功能。

sed 概述

`sed` 从输入流中逐行读取并根据指定规则(脚本)进行处理,然后将结果发送到标准输出。原始文件通常不被更改,要将更改的内容保存到文件中,必须使用重定向(`>`)或使用 `-i` 选项。

sed 的主要角色

`sed` 命令主要用于以下目的:

主要应用领域

  • 文本替换/替换: 将文件中的特定字符串替换为另一个字符串。(最常见的用途)
  • 删除/添加行: 删除包含特定模式的行,或在特定位置插入新行。
  • 模式匹配及输出: 仅输出与特定模式匹配的行,或处理特定范围的行。
  • 文件格式更改: 转换文本文件的格式或重新排列数据。
  • 脚本自动化: 在批量处理大量文本文件的脚本中起着核心作用。

sed 的基本结构

`sed` 的基本命令结构是 `sed [OPTIONS] '脚本' [INPUT_FILE...]`。其中 '脚本' 采用 `[地址]命令[参数]` 的形式,最重要的命令是 `s` (替换)。

主要 sed 命令选项

`sed` 命令提供多种选项,以灵活处理输入、指定脚本和控制输出,从而实现灵活的文本编辑。

1. 脚本和文件处理选项

2. 替换(s) 命令标志

3. 其他有用的命令

生成的命令:

请尝试组合命令。

描述:

`sed` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 `sed` 命令的各种使用示例,学习如何有效地搜索、替换和删除文本文件的内容。

将文件内所有 'old' 替换为 'new'

sed 's/old/new/g' example.txt

在 `example.txt` 文件中将所有单词 'old' 更改为 'new',并将结果显示到标准输出。

直接修改原始文件并替换字符串

sed -i.bak 's/DEBUG=true/DEBUG=false/' config.conf

在 `config.conf` 文件中将 'DEBUG=true' 直接更改为 'DEBUG=false',并生成原始文件的备份(.bak 扩展名)。

删除特定行号的行

sed '5d' log.txt

从 `log.txt` 文件中删除第 5 行并输出结果。

删除范围内的行

sed '10,20d' document.txt

从 `document.txt` 文件中删除第 10 行到第 20 行的内容并输出。

删除包含特定模式的行

sed '/WARNING/d' errors.log

从 `errors.log` 文件中删除包含单词 'WARNING' 的所有行,并输出结果。

在文件内容上插入头行

sed '1i\Name,Age,City' data.csv

在 `data.csv` 文件的第一行上方插入新的头行。

删除空行

sed '/^$/d' text.txt

从 `text.txt` 文件中删除所有空行。 `^$` 是表示空行的正则表达式。


相同类别命令