Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69008
  • 博文数量: 17
  • 博客积分: 508
  • 博客等级: 下士
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-20 12:56
文章分类
文章存档

2010年(17)

分类:

2010-09-20 11:12:53


    1.输出重定向
    将awk的输出重定向到unix/linux文件时,会使用shell的重定向操作符,重定向的目标文件名必须用双引号括起来,如果使用的重定向操作符为>。则文件被打开并清空。文件一旦打开,就会保持打开状态直至显示关闭或awk程序结束,此后print语句的输出都将追加到文件的尾部。
    符号>>也用于打开文件,但是不清除文件内容,只向文件追加内容
    awk '$4 >=70{print $1,$2}' filename
   
    2.输入重定向(getline)
    函数getline getline函数御用从标准输入、管道或文件(非当前处理的文件)读取输入。getline函数用于读取下一输入行,并且设置内置变量NF,NR和FNR。如果读取到一条记录,函数就返回1,如果读取到EOF(end of file,文件末尾)则返回0.如果发生错误,比如打开五年间失败,则getline返回-1
    awk 'BEGIN {"data"|getline d;print d}' filename 先执行unix/linux的data命令,将输出通过管道发给getline,再通过getline将传来的内容赋值给d,然后打印d。
   
    awk 'BEGIN{ "data "|getline d;split(d,mon);print mon[2]}' filename'先执行date命令,将输出通过管道发给getline,接着,getline从管道读取输入,然后保存在用户自定义变量d中,split函数从d中生成一个名为mon的数组,最后程序打印出属于组mon的第二个元素
   
    awk 'BEGIN {while{"ls" |getline} print}'ls的命令的输出将传递给getline,每循环一次,getlinejiucongls的输出中读取一行,并将其显示到屏幕上,不需要输入文件,因为awk会在文件打开之前先处理完BEGIN块。
1.2 管道
    如果在awk程序打开了管道,就必须先关闭他才能打开另一个管道。管道符右边的命令被括在双引号之间,每次只能打开一个管道。
    awk '{print $1,$2 |"sort -r +1 -2 +0 -1" names awk使用管道将print的输出结果发给unix的sort命令作为输入,sort命令将以第二个字段作为逐渐,第一个字段为次键对输入进行逆排序,这种情况下,unix命令必须被双引号括起来
阅读(4754) | 评论(0) | 转发(0) |
0

上一篇:awk之变量篇

下一篇:awk的实例

给主人留下些什么吧!~~