news 2026/10/28 20:31:40

Linux高效文本处理:ex命令详解与实战技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux高效文本处理:ex命令详解与实战技巧

1. 为什么需要掌握ex命令?

在Linux系统日常工作中,文本编辑是最基础也最频繁的操作之一。作为vi编辑器的底层命令集,ex命令提供了比常规vi模式更精确的文本控制能力。很多新手在遇到以下场景时会束手无策:

  • 需要批量修改500个分散在不同行的特定字符串
  • 要对日志文件进行条件化删除(如保留含"error"的行)
  • 在脚本中自动化执行编辑操作

这些正是ex命令的用武之地。与可视化编辑不同,ex采用行编辑模式,通过命令组合能实现复杂文本处理。我在服务器维护中就经常用它快速清理日志、批量更新配置文件,效率比手动编辑高出十倍不止。

2. ex命令基础环境准备

2.1 启动ex编辑器

直接执行ex 文件名进入ex模式,但更实用的方式是在vi中切换:

vi test.txt # 进入vi编辑器 : # 输入冒号进入ex命令模式

2.2 模式区分要点

  • 命令模式:输入:后进入,光标移动到屏幕底部
  • 插入模式:输入i/a/o等命令进入(与vi相同)
  • 可视模式:按v/V/Ctrl+v选择文本(与vi相同)

提示:在命令模式下按Ctrl+c可取消当前输入的命令

3. 核心编辑命令详解

3.1 行号定位与跳转

:3 # 跳转到第3行 :$ # 跳转到文件末尾 :.,+5 # 选中当前行到其后5行 :% # 全文件范围(相当于1,$)

3.2 文本增删改查

:10,20d # 删除10-20行 :g/pattern/d # 删除所有匹配pattern的行 :3,8s/old/new/g # 替换3-8行的old为new :r !date # 插入系统日期(实用技巧)

3.3 高级模式组合

:g/^#/d # 删除所有注释行(以#开头) :v/error/d # 删除所有不含error的行(反向选择) :10,20w newfile # 将10-20行写入新文件

4. 实战案例解析

4.1 日志文件处理

假设有nginx日志access.log,需要提取特定IP的请求:

:g/192.168.1.100/p # 打印该IP所有记录 :v/GET/d # 删除非GET请求 :1,$!sort -u # 全文件去重排序

4.2 配置文件批量修改

修改SSH配置时,需要注释掉特定参数:

:g/^PermitRootLogin/s/^/#/ # 注释所有PermitRootLogin :%s/#Port 22/Port 2222/ # 修改默认端口

5. 避坑指南与技巧

5.1 常见错误处理

  • 误删恢复:输入:e!放弃修改重新加载
  • 范围错误:先使用:1,10p预览再操作
  • 模式混淆:注意提示符:和/的区别

5.2 效率提升技巧

:@: # 重复上条ex命令 :^R " # 粘贴系统剪贴板内容 :set nu # 显示行号(排查时必备)

6. 与sed/awk的对比选择

虽然sed/awk也能完成类似操作,但ex的优势在于:

  • 交互式即时反馈
  • 可结合vi可视化选择
  • 无需退出编辑器即可执行shell命令(:!cmd)

建议使用场景:

  • 简单编辑:vi普通模式
  • 复杂批处理:ex命令模式
  • 超大数据文件:sed/awk流处理

我在处理500MB以上日志文件时,会先用grep -n定位关键行号,再用ex精确编辑,比直接vim打开更节省内存。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 20:31:22

高斯积分全解析:从反常积分到数值实现与精度控制

高斯积分这个名字,很多人是在大学物理课上第一次听到的,但真正被它咬一口,往往是在写代码或者对公式的时候。前阵子一个做分子运动模拟的同学拿着速率分布曲线来找我,说怎么画都归一化不到 1,公式抄了三遍还是不对&…

作者头像 李华
网站建设 2026/10/28 20:31:22

高斯积分推导与数值实现:极坐标换元、归一化常数与工程避坑

高斯积分这个坑,我前前后后踩了不下五次。第一次是在高数下册,盯着 $\int e^{-x^2}dx$ 发呆,老师一句"原函数不是初等函数"就把我们打发了;第二次是在大学物理,麦克斯韦速率分布那个归一化常数 $4\pi(m/2\pi…

作者头像 李华
网站建设 2026/10/28 20:30:33

MIT AI公开课:稀疏空间与音韵学在NLP中的应用

1. 项目概述:MIT AI公开课中的稀疏空间与音韵学这门MIT人工智能公开课的第14讲聚焦两个看似独立实则关联紧密的主题:稀疏空间表示与音韵学建模。作为AI领域的经典课程内容,它揭示了机器学习在处理高维离散数据时的核心方法论。我在系统学习后…

作者头像 李华
网站建设 2026/10/28 20:27:13

异步回调的线程陷阱与优化实践

1. 异步回调的诱惑与陷阱:为什么FutureCallback让人又爱又恨第一次接触HttpAsyncClient的FutureCallback时,那种"解放主线程"的爽快感至今记忆犹新。但当我凌晨两点被报警短信吵醒,发现线上服务因为回调线程爆满而瘫痪时&#xff0…

作者头像 李华
网站建设 2026/10/28 20:24:06

Jotai原子状态管理:React轻量级状态解决方案

1. Jotai原子状态管理库概述Jotai是一个轻量级的React状态管理库,它采用原子(atom)的概念来构建应用状态。与Redux等传统状态管理方案不同,Jotai的核心设计理念是将状态分解为最小的原子单位,通过组合这些原子来构建复杂的状态逻辑。我第一次…

作者头像 李华
网站建设 2026/10/28 20:23:18

物流VRP优化:指定拿起放下约束的建模与求解

1. 项目背景与核心挑战在物流配送领域,车辆路径规划(VRP)一直是优化运营效率的关键技术。传统VRP问题主要考虑车辆容量、时间窗等基础约束,而实际业务中往往存在更复杂的操作限制——比如本文要探讨的"指定拿起放下约束"…

作者头像 李华