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
)。