awk 命令详解:模式匹配与变量运用
需积分: 15 187 浏览量
更新于2024-09-11
收藏 7KB TXT 举报
"这篇资源主要介绍了awk命令在处理文本数据时的各种用法,包括匹配特定行、处理字段、条件判断以及自定义分隔符等。此外,还提到了awk内部预定义变量的作用,如ARGC、ARGV、FILENAME、FNR、FS、RS、NF、NR、OFS和ORS。"
在Linux或Unix环境中,awk是一种强大的文本分析工具,常用于处理和解析结构化数据。以下是关于awk用法和变量含义的详细解释:
1. **匹配行**:
- `awk '/101/' file`:查找并打印文件`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时,打印该行。
2. **处理字段**:
- `awk '{print NR, NF, $1, $NF}' file`:显示文件的当前记录号(NR)、域数(NF)以及每行的第一个($1)和最后一个($NF)域。
- `awk '/101/{print $1, $2+10}' file`:在匹配"101"的行中,打印第一字段,并将第二字段加10。
- `awk '/101/{print $1$2}' file`:将匹配行的第一和第二字段合并,不带分隔符。
3. **处理输入和输出分隔符**:
- `df | awk '$4 > 1000000'`:通过管道符传递`df`命令的输出,显示第四字段大于1000000的行。
- `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`:使用正则表达式定义分隔符,包括空格、冒号、制表符和竖线。
- `awk -F '[][]' '{print $1}' file`:以方括号"[ ]"作为分隔符。
4. **自定义脚本**:
- `awk -f awkfile file`:通过指定的awk脚本文件`awkfile`来处理`file`。
- 例如,`awkfile`可以包含:
```
/101/{print "\047Hello!\047"} # 匹配到"101"时打印'Hello!'
{print $1, $2} # 没有模式时,打印每一行的前两个字段
```
5. **其他内部变量**:
- `ARGC`:命令行参数的数量,包括脚本文件名。
- `ARGV`:命令行参数的数组,包括文件名。
- `FILENAME`:当前正在处理的文件名。
- `FNR`:当前文件中的记录数,不同于全局的`NR`,只针对单个文件。
- `FS`:输入字段分隔符,可自定义。
- `RS`:输入记录分隔符,可自定义。
- `NF`:当前记录中的字段数量。
- `NR`:到目前为止处理的总记录数。
- `OFS`:输出字段分隔符,用于控制输出时字段间的间隔。
- `ORS`:输出记录分隔符,控制行之间的间隔。
通过灵活运用这些功能,awk可以高效地对文本数据进行筛选、处理和格式化,是Linux系统管理及数据分析中的得力助手。
2021-01-10 上传
2011-07-25 上传
2010-01-23 上传
2009-06-05 上传
2009-04-14 上传
2008-10-25 上传
2012-10-25 上传
2020-09-14 上传
点击了解资源详情
zl731764190
- 粉丝: 0
- 资源: 6
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查