我们在学习Unix awk的时候,已经讲解过Unix awk的许多的知识。当然读者要真正地掌握Unix awk,仅仅读了本文是不够的,还必须有上机实习这一步。值得提醒大家的是,Unix awk有很多版本,并且各个版本之间存在着一些差别,因此,在使用awk以前最好参考一下你使用的系统的联机帮助。
1.读取下一条记录:
Unix awk的next语句导致Unix awk读取下一个记录并完成模式匹配,然后立即执行相应的操作。通常它用匹配的模式执行操作中的代码。next导致这个记录的任何额外匹配模式被忽略。
2.简单地读取一条记录
Unix awk的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录,那么getline将尤其有用。它完成一般字段的分离(设置字段变量$0 FNR NF NR)。如果成功则返回1,失败则返回0(到达文件尾)。如果需简单地读取一个文件,则可以编写以下代码:
例:示例getline的使用
- {while(getline==1)
- {
- #process the inputted fields
- }
- }
Unix awk也可以使getline保存输入数据在一个字段中,而不是通过使用getline variable的形式处理一般字段。当使用这种方式时,NF被置成0,FNR和NR被增值。
用户也可以使用Unix awk的 getline<"filename"方式从一个给定的文件中输入数据,而不是从命令行所列内容输入数据。此时,getline将完成一般字段分离(设置字段变量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失败。
用户可以从给定文件中读取数据到一个变量中,也可以用stdin(标准输入设备)或一个包含这个文件名的变量代替filename。值得注意的是当使用这种方式时不修改FNR和NR。Unix awk高级输入的知识,就讲解到这里。
【编辑推荐】