Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1269148
  • 博文数量: 125
  • 博客积分: 4372
  • 博客等级: 上校
  • 技术积分: 1055
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-12 09:53
文章分类

全部博文(125)

文章存档

2019年(3)

2018年(2)

2017年(1)

2016年(2)

2015年(4)

2014年(11)

2013年(5)

2012年(4)

2011年(12)

2010年(10)

2009年(17)

2008年(17)

2007年(25)

2006年(12)

分类: Python/Ruby

2011-07-28 14:26:17

    awk把输入流看作一连串记录的集合,每一条记录都可进一步细分为字段.通常,一行一条记录,而字段则由一个或者多个非空白字符的单词组成.然而,是什么构成一条记录和一个字段,完全由程序员控制,且它们的意义,甚至可以在处理期间更改.
    一个awk程序是一对以pattern { action } 组合而成的,或许,还会加上实现操作细节的函数(function).针对每个匹配于输入数据的模式,操作会被执行,且所有模式都会针对每条输入记录而检查.
    模式或操作可以省略其中一个.如果模式省略,则操作将被应用到每条输入记录;如果操作省略,则默认操作为打印匹配的记录到标准输出上.以下是传统awk程序的配置:
pattern { action } 若模式匹配,则执行输出
pattern            若模式匹配,则打印记录
        { action } 对每条记录,执行操作
输入会自动地由一个输入文件切换到下一个,且awk本身通常会处理每个输入文件的打开,读取与关闭,以允许用户程序专心致力于记录的处理.
    虽然,模式多半是数字或字符串表达式,不过awk以保留字BEGIN与END提供两种特殊模式.
与BEGIN关联的操作只会执行一次,在任何命令行文件或一般命令行赋值被处理之前,但是在任何开头的-v选项指定已经完成之后.它大部分是用来处理程序所需要的任何特殊初始化工作.
    END操作也是只执行一次,用于所有输入数据已被处理完之后.它多半用于产生摘要报告,或是执行清楚操作.
    BEGIN与END可以是任意顺序,可以存在于awk程序内的任何位置.不过,为了方便,我们通常将BEGIN模式放在程序第一个位置,而将END模式放在最后.
    当指定多个BEGIN或END模式,则它们将按照在awk程序里的顺序,一次执行.这允许使用额外的-f选项纳入库代码,以提供起始与清除操作.
    二. 程序元素
    awk处理数字与字符串数据.awk提供了标量(scalar)与数组(array)两种变量以保存数据,数字与字符串表达式,还提供了一些语句类型以处理数据:赋值,注释,条件,函数,输入,循环及输出.awk表达式与语句的许多功能,都与C语言相似.
2.1 注释与空白
   awk里的注释从#开始到改行结束,就像在SHELL里那样.空行等同于空的注释.
2.2 字符串与字符串表达式
   awk里的字符串通常以引号定界.
阅读(1407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~