掌握awk命令:强大的文本处理工具
需积分: 10 175 浏览量
更新于2024-09-09
收藏 6KB TXT 举报
awk命令是一种强大的文本处理工具,特别是在Unix和类Unix系统中广泛用于数据提取、格式转换和简单脚本编写。它的名称源于"awk", Advanced Unix Text Processing Language,由Aho, Weinberger和 Kernighan在1977年开发。awk的主要工作原理是通过模式匹配(pattern)来选择并执行相应的动作(action),针对输入文件中的每一行进行操作。
1. **语法结构**: awk的基本语法格式是 `awk 'pattern {action}' file`。这里,pattern 是一个正则表达式,用来定义行应被处理的条件;action 则是当匹配到pattern时执行的命令。例如,`awk '/101/' file` 会打印包含 "101" 的行。
2. **变量和环境**:
- `ARGC`: 当前awk命令的参数个数。
- `ARGV`: 包含所有命令行参数的数组。
- `FILENAME`: 当前正在处理的文件名。
- `FNR`: 当前正在处理的文件中的行号。
- `FS`: 字符分隔符,默认为空格,用于解析字段。
- `RS`: 行分隔符,默认换行符,用于分割多行记录。
- `NF`: 当前行的字段数量。
- `NR`: 已处理的总行数。
- `OFS` 和 `ORS`: 输出分隔符和行结束符,可自定义。
3. **基本用法举例**:
- `awk '$1==5' file`:匹配第1列等于5的行。
- `awk '$1=="CT"' file`:匹配第1列包含 "CT" 的行。
- `awk '$1*$2>100' file`:检查第1列与第2列相乘是否大于100。
- `awk '{print NR, NF, $1, $NF}' file`:显示每行的行号、字段数以及第1列和最后一列。
4. **流程控制和格式化**:
- `awk '/101/{print $1, $2+10}' file`:在满足pattern时,对第2列加10并打印。
- `awk '/101/{print $1$2}' file`:合并第1列和第2列。
- `awk -F"|'" '{print $1}' file`:根据 "|" 分割并打印第1列。
5. **多行模式**:
- `/101/{print "\047Hello!\047"}`:在找到 "101" 后输出字符串 "Hello!"。
- `{print $1, $2}`:如果没有特殊条件,打印第1列和第2列。
6. **格式设置**:
- `BEGIN{OFS="%"}`:在程序开始时设置输出分隔符为 "%".
- `BEGIN{max=100; print "max=" max}`:初始化变量并打印初始最大值。
7. **逻辑判断和函数**:
- `if(ʽ1) ʽ2 else ʽ3`:条件语句,根据条件执行不同的代码块。
- `awk '{print($1>4 ? "high"$1 : "low"$1)}' file`:基于条件选择输出的字段值。
awk是一个功能强大的文本处理工具,它允许用户灵活地筛选、操作和格式化数据。无论是简单的数据提取还是复杂的条件处理,awk都能胜任。通过熟练掌握其语法和变量,可以极大地提高数据处理的效率和准确性。
2012-09-21 上传
2020-07-27 上传
2012-01-05 上传
2019-04-19 上传
2010-06-19 上传
2023-06-01 上传
driftingman
- 粉丝: 48
- 资源: 19
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站