Linux之awk

awk是用来进行文本处理,它可以从文件或字符串中基于指定规则浏览和抽取信息,在抽取信息的基础上,才能进行其他文本操作。


awk编程模型

awk为程序员提供了完善的编程模型,理解awk编程模型非常重要,这有利于读者从宏观上理解awk,为学习具体的awk编程细节打下基础,

awk程序由一个主出入循环维持,主输入循环反复执行,直到终止条件被触发。当然,主输入循环无需由程序员去写,awk已经打好主输入循环的框架,程序员写的代码被嵌到主输入循环框架中执行。主输入循环自动依次读取输入文件行,以供处理,而处理文件行的动作是由程序员添加的。其他程序语言,如C、C++和JAVA等,程序员需要写一个main函数,然后打开文件、读取文件行、进行相应处理、关闭文件,但是,awk自动完成了上述步骤,是程序员可以更加便捷的书写程序,这正是awk和其他程序语言的本质区别。

awk还定义了两个特殊的字段:BEGIN和END,BEGIN用于在主输入循环之前执行,即在未读取输入文件行之前执行,END则相反,用于在主输入循环之后执行,即在读取输入文件行完毕后执行。我们也可以简单的将awk编程模型分成三个阶段:读输入文件之前的执行代码段(由BEGIN关键字标识)、读取输入文件时的执行代码段、读输入文件完毕之后的执行代码段(由END关键字标识)。



awk调用方法

调用awk的方法有三种方式,一种为Shell命令方式,另外两种是将awk程序写入脚本文件,然后执行该脚本文件。三种方式的命令格式归纳如下:

(1)在Shell命令行输入命令调用awk,格式为:

awk -F域分隔符   'awk程序段' 输入文件      例如: awk -F' ' '{print $0}' file.txt       (以空格分割输出file.txt中所有域)

(2)将awk程序段插入脚本文件,然后通过awk命令调用它,格式为:

awk -f awk脚本文件  输入文件                 例如: awk -f scr.awk file.txt              scr.awk内容是:{print $0}    输出所有域,和(1)结果相同

(3)将awk命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:

./awk脚本文件 输入文件             例如: ./scr1.awk file.txt                       scr1.awk内容是:#!/bin/awk -f         {print $0}      结果同上。


awk模式匹配

任何awk语句都由模式(pattern)和动作(action)组成。模式是一组用于测试输入行是否需要执行动作的规则,动作是包含语句、函数和表达式的执行过程。简言之,模式绝对动作何时触发和触发事件,动作执行对输入行的处理。本节通过一组例子讲述awk模式匹配,awk模式匹配经常需要用到正则表达式,awk支持所有正则表达式元字符,awk支持“?” 和“+”两个扩展元字符,而grep和sed并不支持。

  例如:  awk '/A/{print $0}' file.txt    结果同上


记录和域

awk定义域操作符$来指定执行动作的域,域操作符$后面跟数字或变量来标识域的位置,每条记录的域从1开始编号,如$1表示第一个域、$2表示第二个域。$0表示所有域。



未完  待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值