> 文本处理与搜索 > awk

精通 AWK 命令:文本处理的魔术师

AWK 是一种强大的脚本语言和命令行工具,用于在文本文件中搜索模式,并根据搜索到的模式处理或重新格式化数据。它可用于各种文本处理任务,例如生成数据报告、数据提取和转换。通过本指南,您将学习 AWK 的基本用法和高级功能。

AWK 概述

AWK 是由三位开发者 A. V. Aho、P. J. Weinberger 和 B. W. Kernighan 的姓名首字母缩写而成,是 Unix 类系统中广泛使用的数据操作语言。它从文件或标准输入中逐行读取,并根据指定的模式和动作处理数据。

AWK 的工作方式

AWK 遵循以下基本结构:`pattern { action }`。每读取一行,如果 `pattern` 匹配,则执行 `action`。如果没有模式,则对所有行执行动作。如果没有动作,则直接输出匹配的行。

AWK 的特点

  • 逐行处理: 逐行(记录)读取并处理输入文件。
  • 字段级别访问: 将每行按空白(默认分隔符)分隔成多个字段($1、$2 等),并允许访问这些字段。
  • 模式匹配: 只能对符合特定模式的行执行操作。
  • 编程功能: 提供变量、条件语句、循环、函数等基本编程功能。
  • 报告生成: 可以轻松生成复杂格式的文本报告。

主要 AWK 命令与选项

利用 AWK 的各种选项、内置变量和特殊模式,精确处理文本数据。

1. 基本用法及输入/输出选项

2. 内置变量

3. 特殊模式

生成的命令:

请尝试组合命令。

描述:

`awk` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 AWK 命令的各种使用示例,体验文本数据处理的魔力。

从文件中只输出第二个字段

awk '{print $2}' data.txt

从 `data.txt` 文件中提取并输出每行的第二个字段(列)。(默认分隔符:空白)

从 CSV 文件中输出特定字段

awk -F',' '{print "姓名: " $1 ", 分数: " $3}' scores.csv

从逗号(`,`)分隔的 `scores.csv` 文件中输出姓名(第一个字段)和分数(第三个字段)。

只输出包含特定模式的行

awk '/ERROR/{print}' log.txt

输出 `log.txt` 文件中所有包含 'ERROR' 字符串的行。

与行号一起输出

awk '{print NR ": " $0}' names.txt

在 `names.txt` 文件的每行前面加上行号后输出。

修改第一个字段为 'apple' 的行的第二个字段值

awk '$1 == "apple" {$2 = "fruit"; print}' inventory.txt

在文件中找到第一个字段为 'apple' 的行,将第二个字段修改为 'fruit',然后输出整行。

文件处理前后消息输出及总和计算

awk 'BEGIN {total = 0; print "计算开始!"} {total += $1} END {print "总和: " total}' numbers.txt

将 `numbers.txt` 文件中的所有数字相加,并在开始和结束时输出消息。(假设每行只包含一个数字)


相关命令

功能上相似或经常一起使用的命令。


相同类别命令