> 文本处理与搜索 > ex

ex: 基于行的文本编辑器

ex 是 Vi IMproved (Vim) 编辑器的基于行的模式,主要用于脚本或自动文本处理。它提供了强大的功能来编辑文件的特定行或批量修改多个文件,并且比交互式使用更适合非交互式脚本。

概述

ex 是 Vi 编辑器的基于行的命令模式。它在逐行处理文件内容或使用正则表达式执行复杂的文本转换方面非常有用。它尤其是在 shell 脚本中自动修改文件时的一个强大工具。

主要特点

  • 基于行的文本编辑
  • 针对脚本和自动化任务进行了优化
  • 强大的正则表达式支持
  • 使用与 Vi/Vim 相同的命令集
  • 支持非交互模式

主要选项

ex 主要在文件内直接执行命令,但它提供了一些命令行选项来控制启动时的特定行为。

启动和模式选项

生成的命令:

请尝试组合命令。

描述:

`ex` 执行命令。

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

使用示例

ex 主要用于在脚本中执行特定任务,或在 vi 编辑器内部通过 `:ex` 命令切换使用。

打开文件并打印内容

ex -s file.txt <<EOF
%p
q!
EOF

以 ex 模式打开文件,打印所有行后退出。

在文件中替换字符串并保存

ex -s -c '%s/old_string/new_string/g | wq' file.txt

将 file.txt 文件中的 'old_string' 全部替换为 'new_string' 并保存后退出。

批量替换多个文件中的字符串

for f in *.txt; do ex -s -c '%s/error/warning/g | wq' "$f"; done

将当前目录下的所有 .txt 文件中的 'error' 替换为 'warning'。

删除特定行

ex -s -c '5d | wq' file.txt

删除 file.txt 文件的第 5 行并保存。

提示与注意事项

ex 比交互式使用更适合脚本或自动化任务,了解一些提示可以更有效地处理文本。

主要提示

  • 在非交互式脚本中,请始终使用 `-s` (silent) 选项来抑制不必要的输出。
  • 命令与 `vi` 的命令模式相同,可以使用 `:wq` 保存并退出,或使用 `:q!` 不保存退出。
  • 正则表达式的使用与 `sed` 类似,非常强大。`%s/pattern/replacement/g` 用于替换文件中的所有匹配项。
  • ex 是大多数 Linux 系统上默认安装的 `vi` 或 `vim` 包的一部分。
  • 可以使用管道符 `|` 将多个 ex 命令连接在同一行执行。

相同类别命令