Unix awk的 getline语句及其它知识讲解

系统 其他OS
我们今天来学习Unix awk的 getline语句及其它知识。Unix awk中允许在程序中关闭一个输入或输出文件,方法是使用Unix awk的close语句。

通过以前我们讲解的知识,我们知道Unix awk的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录,那么getline将尤其有用。它完成一般字段的分离(设置字段变量$0 FNR NF NR)。如果成功则返回1,失败则返回0(到达文件尾)。如果需简单地读取一个文件,则可以编写以下代码:

例:示例getline的使用

  1. {while(getline==1)  
  2. {  
  3. #process the inputted fields  
  4. }  

Unix awk也可以使getline保存输入数据在一个字段中,而不是通过使用getline variable的形式处理一般字段。当使用这种方式时,NF被置成0,FNR和NR被增值。

用户也可以使用Unix awk的 getline<"filename"方式从一个给定的文件中输入数据,而不是从命令行所列内容输入数据。此时,getline将完成一般字段分离(设置字段变量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失败。

用户可以从给定文件中读取数据到一个变量中,也可以用stdin(标准输入设备)或一个包含这个文件名的变量代替filename。值得注意的是当使用这种方式时不修改FNR和NR。

另一种使用getline语句的方法是从Unix命令接受输入,例如下面的例子:

例:示例从Unix命令接受输入
 

  1. {while("who -u"|getline)  
  2. {  
  3. #process each line from the who command  
  4. }  

当然,也可以使用如下形式:
"command" | getline variable

关闭文件:

Unix awk中允许在程序中关闭一个输入或输出文件,方法是使用Unix awk的close语句。
close("filename")

filename可以是getline打开的文件(也可以是stdin,包含文件名的变量或者getline使用的确切命令)。或一个输出文件(可以是stdout,包含文件名的变量或使用管道的确切命令)。

输出到一个文件:

Unix awk中允许用如下方式将结果输出到一个文件:
printf("hello word! ")>"datafile"

printf("hello word! ")>>"datafile"

输出到一个命令

Unix awk中允许用如下方式将结果输出到一个命令:
printf("hello word! ")|"sort-t','"

【编辑推荐】

  1. Unix awk的内置函数知识概括
  2. 关于Unix awk的记录的知识讲解
  3. Unix awk的调用方式方面的知识介绍
  4. Unix awk使用手册修改版本
  5. 为什么要使用Unix awk
责任编辑:小霞
相关推荐

2010-05-11 10:43:10

Unix awk

2010-05-06 14:37:22

Unix系统交换区

2010-05-11 11:29:11

Unix awk

2010-05-05 13:13:55

Unix内核

2010-05-11 12:53:58

Unix awk

2010-05-05 13:45:21

Unix Telnet

2010-04-30 13:27:26

Unix cronta

2010-04-30 13:38:51

Unix at命令

2010-05-04 09:22:10

Unix文件

2010-05-04 12:25:28

Unix链接

2010-05-11 11:34:44

2010-05-06 17:03:49

Unix命令

2010-05-04 16:33:39

Unix系统

2010-05-05 10:44:37

Unix 反引号

2010-05-05 15:02:39

Unix系统

2010-04-30 14:51:23

Unix系统

2010-04-30 18:20:23

Unix系统

2010-05-05 13:22:29

Unix Shell

2010-04-21 12:39:48

Unix 消息队列

2010-04-21 14:29:52

Unix 线程
点赞
收藏

51CTO技术栈公众号