1977年由Aho、Weinberger、Kernighan在贝尔实验室开发的文本处理语言,名称取自三位作者姓氏首字母,以模式-动作对的形式处理结构化文本,是Unix工具链中数据提取与格式转换的经典工具。

| 首次发布 | 1977年 |
| 设计者 | Alfred Aho, Peter Weinberger, Brian Kernighan |
| 范式 | 数据流、模式匹配、命令式 |
AWK诞生于1977年的贝尔实验室,作者是Alfred Aho、Peter Weinberger和Brian Kernighan(K&R C的那个Kernighan)。它解决的是一个非常具体的问题:如何快速从结构化文本文件中提取和重组数据,而不需要写完整的C程序。
AWK程序的基本结构是模式-动作对:/pattern/ { action }。AWK对输入文本逐行扫描,对匹配模式的行执行对应动作。如果没有模式,对每行都执行。$1、$2、$NF分别代表当前行的第一个字段、第二个字段、最后一个字段,FS变量控制字段分隔符(默认空格/Tab)。这让处理类似CSV或日志文件的文本极为简洁:
awk '$3 > 100 {print $1, $3}' data.txt 打印第三列大于100的行的第一和第三列awk -F: '{sum += $3} END {print sum}' /etc/passwd 计算/etc/passwd中所有UID之和特殊的BEGIN和END块在处理开始和结束时各执行一次,常用于初始化变量和输出汇总。[1]
AWK在「小任务用小工具」的Unix哲学里有独特位置:比Python或Perl启动快,比sed能做更复杂的计算,比shell循环处理文本高效。它内置了关联数组(哈希表),让统计频率、去重、分组聚合这类操作几行就能完成。
gawk(GNU AWK)是Linux上最常见的实现,加入了UDP/TCP网络套接字、间接函数调用、双向管道等扩展。mawk以速度著称,是许多嵌入式系统的默认选择。Brian Kernighan维护的One True AWK(原版,2023年在GitHub开源)依然简洁可靠。在现代数据工程中,面对GB级日志文件做快速过滤和统计时,awk管道常常比pandas或SQL客户端更快启动并得到结果,这也是它在DevOps和数据工程师工具箱里仍占一席之地的原因。

| 首次发布 | 1977年 |
| 设计者 | Alfred Aho, Peter Weinberger, Brian Kernighan |
| 范式 | 数据流、模式匹配、命令式 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧