awk命令详解:文本处理与报表输出

需积分: 34 0 下载量 99 浏览量 更新于2024-09-13 收藏 98KB PDF 举报
"awk用法小结" awk 是一个强大的文本分析工具,主要用于处理结构化的文本文件,特别是那些具有行和列数据格式的文件。它的功能远超简单的文本搜索和替换,能够进行复杂的编程处理,生成复杂的报表输出。awk 有三个主要版本:旧awk、nawk(新awk)和 gawk。在 Solaris 系统中,推荐使用 nawk,因为旧awk缺少一些功能,比如数学运算中的幂运算`^`,以及`getline`、`system`等函数。 awk 的基本语法结构是:`awk 'pattern {action}' filename`。这里的 `pattern` 指定匹配的模式,`action` 定义了匹配模式时要执行的操作。awk 会逐行读取输入文件,按照模式匹配执行相应动作。除了基本的模式和操作,awk 还支持多种内置变量、函数、条件语句、循环语句、数学运算和字符串操作。 以下是一些awk的关键概念: A. 常用内部变量: - NR:当前处理的行数 - NF:当前行中的字段数 - $0:当前整个行的内容 - $1, $2, ...:分别代表第一、第二等字段 - FS:字段分隔符,默认为空格或制表符 - OFS:输出字段分隔符,默认为空格 - ORS:输出记录分隔符,默认为换行符 B. 模式匹配: - 可以使用正则表达式,如`/pattern/` - 条件语句,如`$3<10` C. 特殊操作: - BEGIN:在处理文件前执行,常用于设置变量如FS、OFS - END:在处理所有文件后执行,常用于汇总操作 D. 条件与循环: - if...else, next, exit - for, do...while, continue, break E. 数学与字符串操作: - 数学运算符:`+`, `-`, `*`, `/`, `%`, `^` - 数学函数:`sin`, `int` - 字符串函数:`length`, `index`, `gsub`, `substr` 等 F. 数组与关联数组: - 使用索引访问,如`a[1]`, `a[$1]`, `a[$0]` - 支持动态键值对 G. 输入输出控制: - 重定向:`>>`, `|` - 内部命令:`getline`(获取下一行),`system`(执行系统命令) awk 的三种调用方式: 1. 直接在命令行中指定模式和操作及文件名:`awk 'pattern {action}' filename1, filename2` 2. 使用脚本文件:`awk -f myscript.awk filename1, filename2` 3. 设置脚本文件的执行权限并运行:`#!/bin/nawk -f ...`,然后执行`myscript.awk filename` 特别注意事项: 当从 Windows 拷贝 awk 脚本到 Unix 系统时,需要注意行尾的换行符可能不兼容,需要确保转换正确,避免影响脚本执行。 awk 是一个功能强大的文本处理工具,其灵活性和功能性使其在数据分析和文本操作中不可或缺。通过熟练掌握awk的用法,可以极大地提高处理结构化文本的效率。