概述
ed 是一个强大而简洁的编辑器,专门用于逐行编辑文本文件。除了交互模式,它还可以用于脚本中的非交互式使用,非常适合自动化文本处理。
主要特点
- 行导向编辑:一次处理一行
- 对脚本友好:适合非交互式使用
- 非常轻量:资源占用极少
- POSIX 标准:默认包含在大多数 Unix/Linux 系统中
主要选项
ed 的命令行选项不多,大部分功能通过编辑器内部命令实现。
控制行为
生成的命令:
请尝试组合命令。
描述:
`ed` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
ed 可以交互式使用,也可以通过脚本的输入重定向来使用。
创建新文件并添加文本
ed newfile.txt
a
Hello, ed!
This is a test line.
.
w
q
打开一个新文件,添加文本,然后保存并退出。
打开现有文件并查看内容
ed existing_file.txt
1,$p
q
打开一个现有文件,打印所有行,然后退出。
替换特定文本(非交互式)
echo '1,$s/old_text/new_text/g
w
q' | ed -s my_document.txt
将文件中的 'old_text' 全部替换为 'new_text' 并保存。使用 -s 选项抑制输出。
在文件末尾添加内容(非交互式)
echo '$a
New line added at the end.
.
w
q' | ed -s my_document.txt
在文件末尾添加新行并保存。
提示与注意事项
ed 的使用方式与许多现代编辑器截然不同,理解一些核心概念非常重要。
ed 使用核心概念
- **命令模式与插入模式**:ed 默认处于命令模式,通过 `a` (append)、`i` (insert)、`c` (change) 等命令进入插入模式。在插入模式下,在单独一行输入 `.` (点) 会返回命令模式。
- **地址指定**:命令可以应用于特定行(例如 `1` 表示第一行,`$` 表示最后一行,`.` 表示当前行)或行范围(例如 `1,$` 表示整个文件)。
- **保存与退出**:使用 `w` 命令保存更改,使用 `q` 命令退出编辑器。不支持 `wq` 等组合命令。`Q` 会强制退出而不保存更改。
- **查看当前行**:输入 `.` 命令会打印当前行的内容,输入 `=` 命令会打印当前行号。
- **利用正则表达式**:与 `s` (substitute) 命令结合使用强大的正则表达式来查找和替换文本。