AWK模式处理语言

AWK是一种模式扫描和处理语言,它处理一个或多个文件,以查看这些文件中是否含有匹配指定模式的记录,每次发现有匹配的记录就执行与模式相对应的动作,与过程式的编程语言相反,AWK是一种数据驱动语言:用户描述想要处理的数据并告诉AWK如何出来这些数据。

AWK与Sed最大的区别在于,AWK对于结构化文件的处理能力,所谓结构化文件是指划分为记录和域的文件。AWK对格式化报表的生成提供很多强大的支持。


关于AWK版本的区别:

AWK语言最初在UNIX下作为awk使用程序实现的,在大多数Linux版本中,提供的是gawk(awk的GNU实现)或者 mawk(awk的一个快速删减版)。

在大多数Linux,也可以使用awk,不多awk和gawk是等价的,因为/bin/awk会链接到gawk上去



语法:

gawk [options]   [program]  [file-list]

gawk [options]  -f  program-file   [file-list]

其中:

program是用户在命令行中键入的gawk程序,program-file是写入gawk的文件名称。另外,为了防止Shell将gawk命令解释成shell命令,需要将program用单引号包含。

file-list就是用户需要处理的输入文件,如果未指定输入文件则从标准输入读取。


选项[options]:



gawk程序program

program的语法如下:

'pattern { action }'

样式pattern用于删选记录行,动作action用于对筛选出来的记录执行相应的操作。如果省略样式pattern,则用action执行文件中的所有记录,如果省略action,则显示筛选出来的记录。


一些示例:

student-info是一些学生的信息,一次是学生姓名、性别、年龄、语文成绩、数学成绩、英语成绩,每一项都是用制表符Tab隔开


1. 如果要显示出所有女生的年龄

使用命令 awk '/female/{print $1,$3}' student-info


其中模式pattern是 /female/ ,动作action是{print $1,$3} ,模式是正则表达式匹配需要用斜杠/隔开,默认的域分隔符是空格(制表符可开成是一连串的空格组成),action中的$1表示用分隔符隔开形成的第一个域


2.查看考得100分学生的姓名



3.查看语文考得100分的学生姓名


~表示匹配运算符, $4  ~  /pattern/ 表示第4个域符合pattern 的记录

!~表示不匹配运算符


4. 查看学生姓名以'M'开头的记录


脱字符(^)表示行首开头,这与正则表达式是相同的,同理也可以使用M$表示以M结尾的记录


5. 查看语文成绩大于90分的学生记录


当然,你也可以使用其他运算符进行匹配,如:<、==、<=、>=、!=

也可以使用逻辑运算,如,查找语文和英语都大于90分的学生


6.范围运算符——逗号

选出Carol到Hebe之间的所有学生记录



7.使用awk程序文件




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值