Linux系统中的ex命令是一个强大的行编辑器,它是vi编辑器的前身,至今仍被广泛应用于文本处理和自动化脚本中,与vim等全屏编辑器不同,ex命令基于行模式操作,用户通过输入特定的命令来编辑文本,适合在终端中快速完成批量编辑任务,本文将详细介绍ex命令的核心功能、使用方法及实际应用场景。

ex命令的基本概念
ex命令起源于Unix早期的ed编辑器,后来发展为vi的命令模式,它启动后默认处于命令模式,用户需输入命令进行操作,后跟命令执行编辑操作,ex命令支持文件操作(保存、退出)、文本修改(删除、替换)、模式匹配(正则表达式)等功能,特别适合处理结构化文本或配合脚本实现自动化编辑。
核心功能与操作
文件操作
- 打开文件:
ex filename打开指定文件,若文件不存在则创建。 - 保存与退出:
w保存当前文件但不退出。wq或x保存并退出。q!强制退出不保存修改。
- 多文件编辑:
next切换到下一个文件,prev切换到上一个文件。
光标定位与行号
- 跳转行:
n跳转到第n行(如10跳转至第10行)。 - 定位光标:
- 移动到文件末尾。
0或1移动到文件开头。/pattern向下搜索匹配pattern的行,?pattern向上搜索。
文本编辑
- 删除行:
d删除当前行。5,10d删除第5至10行。
- 复制与移动:
co 10将当前行复制到第10行之后。m 5将当前行移动到第5行之后。
- 替换文本:
s/old/new替换当前行中首次出现的old为new。s/old/new/g替换当前行中所有old为new。%s/old/new/g替换整个文件中所有old为new。
高级功能
- 正则表达式匹配:
g/pattern/d删除所有匹配pattern的行。v/pattern/d删除所有不匹配pattern的行。
- 标记与跳转:
ma a在当前行设置标记a。'a跳转到标记a所在行。
- 宏录制:
q开始录制宏,输入命令后按q结束,通过执行宏(如@a执行宏a)。
实际应用场景
批量修改配置文件
修改nginx配置文件中所有端口号为8080:
ex nginx.conf <<EOF :%s/listen 80;/listen 8080/g :wq EOF
上述脚本通过here-document方式调用ex命令,实现批量替换并保存。
日志文件处理
提取包含特定错误关键词的行并保存到新文件:

ex error.log <<EOF /grep "ERROR"/p :wq error_extracted.log EOF
/pattern/p命令打印匹配行,结合w可定向输出。
数据清洗
处理CSV文件时删除空行或无效数据:
ex data.csv <<EOF :g/^$/d :s/,,/,NA,/g :wq EOF
ex命令与vi/vim的关系
ex命令是vi的底层引擎,vi启动后默认进入ex的“可视模式”(即全屏界面),在vi中输入即可进入ex命令模式,执行相同操作,掌握ex命令能提升vi/vim的使用效率,尤其适合远程服务器或无图形界面的环境。
常见操作对比表
| 功能 | ex命令示例 | vi/vim等效操作 |
|---|---|---|
| 跳转至第10行 | 10 | 10G 或 10 |
| 删除当前行 | d | dd |
| 全局替换 | %s/old/new/g | %s/old/new/g |
| 保存并退出 | wq | wq 或 ZZ |
| 搜索文本 | /pattern | /pattern |
相关问答FAQs
Q1: ex命令与sed命令有何区别?
A1: ex是交互式行编辑器,适合复杂编辑任务(如多步骤修改、标记跳转),而sed是非交互式流编辑器,更适合管道处理(如sed 's/old/new/g' file),ex支持更丰富的编辑命令,但sed在脚本中更轻量高效。

Q2: 如何在ex中执行多行命令? |
A2: 使用后跟分号分隔命令,
ex file <<EOF :1,5s/^/#/; :wq EOF
上述命令将第1至5行行首添加注释符号后保存退出,也可通过连接命令(如1,5d|:wq)。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/412338.html<
