Linux 文本处理完整指南:grep、awk、sed、jq 命令详解与实战

本文将教你如何使用 grep、awk、sed 和 jq 实现高效的 Linux 文本处理。这份实用指南涵盖语法、真实场景案例及最佳实践,适用于系统管理员、开发人员和数据工程师。

如果你有过 Linux 操作经验,就会知道文本处理是绕不开的核心需求。无论是解析几 GB 的服务器日志、从 CSV 文件中提取关键信息、批量修改配置文件,还是处理 API 返回的 JSON 数据,你都需要快速且灵活的工具来应对。

好消息是,Linux 自带四款"神器":grepawksedjq。它们各自有独特优势,搭配使用时能解决 90% 的文本处理问题。本文会跳过枯燥的理论,聚焦"当下就能用的实操内容",带你快速上手。

一、Linux 文本处理工具简介

Linux 中的文本处理本质上可归为四类核心任务:搜索、提取、编辑和解析结构化数据。这些工具体积轻量、多数 Linux 发行版预装,且专为命令行效率设计。它们的分工如下:

  • grep:"搜索高手",用于查找文本中的匹配模式
  • awk:"数据专家",用于从结构化文本中提取信息并计算
  • sed:"流编辑器",用于批量修改文本内容
  • jq:"JSON 利器",用于过滤和转换 JSON 数据

二、grep:高效查找文本内容

grep(全称为 Global Regular Expression Print)是定位匹配模式行的首选工具。即便处理大文件,它也能保持极快速度,且支持正则表达式实现精准搜索。

核心特性

  • 支持基础与扩展正则表达式
  • 可递归搜索目录下的所有文件
  • 提供大小写不敏感、显示行号、反向匹配等功能

实操案例

基础搜索:在日志文件中查找所有"ERROR"条目:

复制代码
grep "ERROR" server.log

大小写不敏感 + 显示行号:捕捉"error""Error"等所有变体,并显示对应行号:

复制代码
grep -i -n "error" server.log

递归搜索:在所有 Python 文件中查找"TODO"注释:

复制代码
grep -r "TODO" *.py

反向匹配:显示不包含"DEBUG"的行(适合过滤冗余信息):

复制代码
grep -v "DEBUG" server.log

三、awk:提取与分析结构化数据

awk 不只是工具,更像一门用于文本处理的迷你编程语言。它擅长逐行处理结构化数据(如 CSV 文件或格式固定的日志),能将行拆分为列并执行逻辑运算。

核心特性

  • 可将行拆分为自定义字段(默认以空白字符为分隔符)
  • 支持条件判断、循环和算术运算
  • 借助 BEGIN/END 块实现初始化 / 收尾操作

实操案例

提取 CSV 字段 :从 users.csv(列结构:姓名,年龄,城市)中打印姓名和城市:

继续阅读全文:Linux 文本处理完整指南:grep、awk、sed、jq 命令详解与实战

相关推荐
Sheffield5 分钟前
command和shell模块到底区别在哪?
linux·云计算·ansible
历程里程碑17 分钟前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴19 分钟前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
承渊政道23 分钟前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
技术路上的探险家24 分钟前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker
代码AC不AC28 分钟前
【Linux】深入理解缓冲区
linux·缓冲区·标准错误
Doro再努力32 分钟前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
全栈工程师修炼指南43 分钟前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
Lsir10110_1 小时前
【Linux】进程信号(上半)
linux·运维·服务器
开开心心就好1 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节