使用 AWK 和 sed 进行文本处理

学习使用 AWK 和 sed 进行文本处理。本模块涵盖 sed 替换基础、sed 流编辑、AWK 列提取、AWK 过滤与逻辑、AWK 计算。您将通过实践操作和真实世界挑战掌握这些基本的 Linux 技能。

DevOps 工程师LinuxDevOps

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

使用 Linux 中两种强大的文本处理工具,将命令行中的原始文本转化为实用且可重复生成的结果。本课程通过动手练习,帮助你建立清晰的工具认知:把 sed 作为流编辑器,把 awk 作为面向字段的处理语言,从而根据任务选择合适的方法,而不是拼凑脆弱的一次性命令。

你将处理示例文本、CSV 风格数据、/etc/passwd 和 Web 服务器日志。课程从短小的引导练习逐步推进到系统报告挑战:清洗日志记录、提取 HTTP 状态码、统计 404 响应、计算错误率,并生成简洁报告。

你将学到什么

  • 使用 sed 替换每行的首个匹配项或全部匹配项
  • 选择易读的替换分隔符,并在保留备份的情况下原地编辑文件
  • 结合 sed 的地址与命令删除、插入和选择性输出行
  • 使用 awk 提取字段,包括自定义分隔符和通过 $NF 获取末字段
  • 按数值条件或文本模式筛选记录,并使用 NR 为输出添加行号
  • 使用 BEGIN、逐记录逻辑、变量和 END 组织 awk 处理流程
  • 求和、按条件计数、计算百分比并格式化报告

本课程适合谁

本中级课程适合希望无需编写大型程序即可检查和转换结构化文本的 Linux 用户、系统管理员、DevOps 学习者和开发者。如果你经常处理日志、命令输出、分隔符文件或简单运维报告,本课程尤其适用。

前置要求: 熟悉 Linux 终端、文件与目录、管道和输出重定向的基本操作。不要求具备 sed 或 awk 使用经验。

学习环境: 配有预置文本、账户信息、CSV 风格数据和 Web 日志文件的 LabEx Linux 终端。

常见问题

什么时候该用 sed,什么时候该用 awk?

任务重点是修改、删除、插入或选择文本流中的行时,适合使用 sed;需要拆分记录字段、应用条件、维护计数或总和并组装报告时,适合使用 awk。最终挑战会按顺序结合使用两者。

练习会修改真实的系统数据吗?

不会。课程会读取 /etc/passwd 来练习字段提取,但不会修改它。编辑操作只针对预置的项目文件;替换实验同时演示仅预览输出的方式,以及会保留原始备份的 sed -i.bak。

最终挑战会产出什么?

你将把带引号的示例 Web 服务器日志转换为多个可验证文件:清洗后的日志、状态码列表、404 计数、错误率文件,以及类似 Total: 8, 404: 2, Rate: 25% 的单行摘要。

教师

labby
Labby
Labby is the LabEx teacher.