UNIX系统下的AWK命令详解
需积分: 7 121 浏览量
更新于2024-09-29
收藏 6KB TXT 举报
"AWK在UNIX环境中的应用解析"
在UNIX操作系统中,AWK是一种强大的文本分析工具,常用于处理和解析文件数据。本教程主要基于sco 5.0.5版本的UNIX系统,讲解了AWK的基本用法。
1. 命令格式与变量:
`awk 'pattern {action}' file`
- `pattern`:匹配模式,可以是正则表达式或特定条件。
- `{action}`:执行的动作,如打印、计算等。
- `ARGC`:命令行参数的数量(包括脚本本身)。
- `ARGV`:包含所有命令行参数的数组。
- `FILENAME`:当前处理的文件名。
- `FNR`:当前文件中的行号。
- `FS`:字段分隔符,默认为空格或制表符。
- `RS`:记录分隔符,默认为换行符。
- `NF`:当前行的字段数量。
- `NR`:已读取的总行数。
- `OFS`:输出字段分隔符,默认为空格。
- `ORS`:输出记录分隔符,默认为换行符。
2. 常见的AWK用法:
- `awk '/101/' file`:打印包含模式101的行。
- `awk '/101/,/105/' file`:打印从第一个匹配101的行到第一个匹配105的行之间的所有行。
- `awk '$1==5' file`:如果第一列等于5,则打印该行。
- `awk '$1=="CT"' file`:如果第一列是字符串"CT",则打印该行。
- `awk '$1*$2>100' file`:当第一列乘以第二列大于100时,打印该行。
- `awk '$2>5&&$2<=15' file`:如果第二列在5和15之间(含5和15),则打印该行。
3. 输出格式控制:
- `awk '{print NR, NF, $1, $NF}' file`:打印行号、字段数、第一列和最后一列。
- `awk '/101/{print $1, $2+10}' file`:对于匹配101的行,打印第一列并加上10。
- `awk '/101/{print $1$2}' file`:将匹配101的行的第一列和第二列合并成一个字符串。
- `awk '/101/{print $1$2}' file`:没有指定操作符时,默认是打印整行,但这里的空格表示合并字段。
4. 字段分隔符的设定:
- `awk -F "|" '{print $1}' file`:使用竖线作为字段分隔符,打印第一列。
- `awk 'BEGIN{FS="[:\t|]"} {print $1,$2,$3}' file`:设置字段分隔符为冒号、制表符或竖线,打印前三列。
- `awk -F $Sep '{print $1}' file`:利用变量$Sep作为分隔符。
- `awk -F '[:,\t|]' '{print $1}' file`:直接在命令行中指定多个分隔符。
5. 与其他命令结合:
- `df | awk '$4>1000000'`:通过管道连接df命令,筛选第四列值大于1000000的结果。
- `awk -f awkfile file`:使用名为awkfile的外部AWK脚本来处理file文件。
- `catawkfile`:将awkfile文件的内容作为输入,处理标准输入。
6. 正则表达式匹配:
- `awk '$1~/101/' file`:匹配第一列中含有101的行。
7. 输出字段分隔符的改变:
- `awk 'BEGIN{OFS="%"} {print $1,$2}' file`:设置输出字段分隔符为百分号。
8. 全局变量与逻辑表达式:
- `BEGIN{max=100;print"max="max}`:在处理文件前设置全局变量max,并打印初始值。
- `max=($1>max?$1:max)`:更新max为当前行第一列的值(如果更大)。
- `if(条件) 行动1; else 行动2`:逻辑判断,符合条件执行行动1,否则执行行动2。
9. 条件表达式:
- `awk '{print($1>4?"high"$1:"low"$1)}' file`:根据第一列的值打印"high"或"low",并与数值一起输出。
AWK的强大之处在于其灵活性和对文本处理的精确控制,使得它成为处理大量结构化文本数据的理想工具。通过熟练掌握这些基本用法,可以高效地完成数据提取、分析和报告生成等工作。
2008-11-03 上传
2010-11-09 上传
2009-07-03 上传
2012-11-17 上传
2012-11-07 上传
2015-11-12 上传
2009-06-02 上传
129 浏览量
altboy
- 粉丝: 0
- 资源: 2
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍