菜鸟科技网

Linux ex命令如何高效编辑文本文件?

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

Linux ex命令如何高效编辑文本文件?-图1
(图片来源网络,侵删)

ex命令的基本概念

ex命令起源于Unix早期的ed编辑器,后来发展为vi的命令模式,它启动后默认处于命令模式,用户需输入命令进行操作,后跟命令执行编辑操作,ex命令支持文件操作(保存、退出)、文本修改(删除、替换)、模式匹配(正则表达式)等功能,特别适合处理结构化文本或配合脚本实现自动化编辑。

核心功能与操作

文件操作

  • 打开文件ex filename 打开指定文件,若文件不存在则创建。
  • 保存与退出
    • w 保存当前文件但不退出。
    • wqx 保存并退出。
    • q! 强制退出不保存修改。
  • 多文件编辑next 切换到下一个文件,prev 切换到上一个文件。

光标定位与行号

  • 跳转行n 跳转到第n行(如10跳转至第10行)。
  • 定位光标
    • 移动到文件末尾。
    • 01 移动到文件开头。
    • /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命令,实现批量替换并保存。

日志文件处理

提取包含特定错误关键词的行并保存到新文件:

Linux ex命令如何高效编辑文本文件?-图2
(图片来源网络,侵删)
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 10G10
删除当前行 d dd
全局替换 %s/old/new/g %s/old/new/g
保存并退出 wq wqZZ
搜索文本 /pattern /pattern

相关问答FAQs

Q1: ex命令与sed命令有何区别?
A1: ex是交互式行编辑器,适合复杂编辑任务(如多步骤修改、标记跳转),而sed是非交互式流编辑器,更适合管道处理(如sed 's/old/new/g' file),ex支持更丰富的编辑命令,但sed在脚本中更轻量高效。

Linux ex命令如何高效编辑文本文件?-图3
(图片来源网络,侵删)

Q2: 如何在ex中执行多行命令? |
A2: 使用后跟分号分隔命令,

ex file <<EOF
:1,5s/^/#/; :wq
EOF

上述命令将第1至5行行首添加注释符号后保存退出,也可通过连接命令(如1,5d|:wq)。

分享:
扫描分享到社交APP
上一篇
下一篇