首页 > 其他 > 详细

【译】 AWK教程指南 3计算并打印文件中指定的字段数据

时间:2014-05-04 12:10:59      阅读:562      评论:0      收藏:0      [点我收藏+]

  awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段;程序中可使用 $1, $2,... 直接取得各个字段的内容。这个特色让使用者易于用 awk 编写 reformatter 来改变数据格式。

 

范例:以数据文件 emp.dat 为例,计算每人应发工资并打印报表。

分析:awk 会自行一次读入一条记录,故程序中仅需告诉 awk 如何处理所读入的数据行。

  执行如下命令:($ 表UNIX命令行上的提示符)      

bubuko.com,布布扣
    $ awk { print $2, $3 * $4 } emp.dat
bubuko.com,布布扣

  执行结果如下:

  屏幕出现:

        bubuko.com,布布扣 

说明:

  1. UNIX命令行上,执行awk的语法为:    

bubuko.com,布布扣
    $ awk  awk程序  要处理的数据文件名
bubuko.com,布布扣

    本范例中的 程序部分为 {print $2, $3 * $4}。把程序置于命令行时,程序之前后必须以 ‘ (单引号)括住。

  2. emp.dat 为指定给该程序处理的数据文件名。 

  3. 本程序中使用:Pattern { Actions } 语法。          

Pattern Actions
  print $2, $3 * $4
    
  Pattern 部分被省略,表示无任何限制条件。故awk读入每行数据后都将无条件执行这个 Actions。

  4. print为 awk 所提供的输出指令,会将数据输出到stdout(屏幕)。print 的参数间彼此以 "," (逗号) 隔开,打印出数据时彼此间会以空白隔开。(参考 附录 D 内置变量OFS)

  5. 将上述的 程序部分 储存于文件 pay1.awk 中,执行命令时再指定 awk程序文件 的文件名。这是执行awk的另一种方式,特别适用于程序较大的情况,其语法如下:    

bubuko.com,布布扣
    $ awk -f awk程序文件名 数据文件名
bubuko.com,布布扣

  故执行下列两命令,将产生同样的结果。

bubuko.com,布布扣
    $ awk -f pay1.awk emp.dat  
    $ awk { print $2, $3 * $4 } emp.dat
bubuko.com,布布扣

  读者可使用 "-f" 参数,让awk主程序使用“其它 仅含 awk函数 的程序文件中的函数 ”

  其语法如下:  

bubuko.com,布布扣
    $ awk -f awk主程序文件名 -f awk函数文件名 数据文件名
bubuko.com,布布扣

  (有关 awk 中函数的声明与使用于 7.4 中说明)

  6. awk中也提供与 C 语言中类似用法的 printf() 函数,使用该函数可进一步控制数据的输出格式。

  编辑另一个awk程序如下,并取名为 pay2.awk 

bubuko.com,布布扣
    { printf("%6s Work hours: %3d Pay: %5d\n", $2, $3, $3 * $4) }
bubuko.com,布布扣

  执行下列命令 

bubuko.com,布布扣
    $ awk -f pay2.awk emp.dat
bubuko.com,布布扣

  执行结果屏幕出现:

        bubuko.com,布布扣

【译】 AWK教程指南 3计算并打印文件中指定的字段数据,布布扣,bubuko.com

【译】 AWK教程指南 3计算并打印文件中指定的字段数据

原文:http://www.cnblogs.com/qieerbushejinshikelou/p/3705477.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!