第9章_awk介绍

如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务。它在文本浏览和数据的熟练使用上性能优异

有三种方式调用a w k,

第一种是命令行方式,如:

awk [-F field-separator] 'commad' input-file(s)

上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明-F选

第二种方法是将所有a w k命令插入一个文件,并使a w k程序可执行,然后用a w k命令解释
器作为脚本的首行,以便通过键入脚本名称来调用它。
第三种方式是将所有的a w k命令插入一个单独文件,然后调用:

awk -f awkscriptfile input-file(s)


awk执行时,其浏览域标记为$ 1,$ 2 . . . $ n。这种方法称为域标识。使用这些域标识将更容
易对域进行进一步处理。
使用$ 1 , $ 3表示参照第1和第3域,注意这里用逗号做域分隔。如果希望打印一个有5个域
的记录的所有域,不必指明$ 1 , $ 2 , $ 3 , $ 4 , $ 5,可使用$ 0,意即所有域。awk浏览时,到达一新
行,即假定到达包含域的记录末尾,然后执行新记录下一行的读动作,并重新设置域分隔。
注意执行时不要混淆符号$和s h e l l提示符$,它们是不同的。

为打印一个域或所有域,使用p r i n t命令。这是一个a w k动作(动作语法用圆括号括起来)


关于正则 只适用于a w k而不适用于g r e p或s e d。它们是:
+ 使用+匹配一个或多个字符。

? 匹配模式出现频率。例如使用/X Y?Z/匹配X Y Z或Y Z。


awk条件操作符
操作符描述操作符描述

< 小于

>= 大于等于

< = 小于等于

~ 匹配正则表达式

= = 等于

!~ 不匹配


awk内置变量

ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行- F选项

NF 浏览记录的域个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符

RS 控制记录分隔符


以下例子中,所有学生记录被打印,并带有其记录号。使用N F变量显示每一条读记录中

有多少个域,并在E N D部分打印输入文件名。

awk '{print NF,NR,$0}END{print FILENAME}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan269

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值