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` 文件中的所有数字相加,并在开始和结束时输出消息。(假设每行只包含一个数字)