【简单翻译】AWK编程语言 第一章第一节

书籍作者:Alfred V.AHO, Brian W.Kernighan, Peter J.Weinerger

第一章

AWK 是一种方便而又富有表达力的编程语言,可以用于广泛的计算与数据处理任务。这一章是一篇教程,是为了让你尽可能快的写出你自己的程序而设计的章节。第二章将描述这个语言的整体,而剩下的章节将会向你展示AWK可以如何解决一些来自不同领域的问题。透过整本书我们试着去挑选出一些你会觉得有用,有趣,有益的例子。

1.1 开始吧

有用的AWK程序通常很短,只需要一到两行。假设你有一个文件称 emp.data 包含了你的员工们的 名字,每小时工资费率 和 工作小时数。一个员工一行,就像这样:

Bath 4.00 0

Dan 3.75 0

Kathy 4.00 10

Mark 5.00 20

Mary 5.50 22

Susie 4.25 18

现在你想打印出工作小时数大于零的员工的姓名与工资(小时乘上每小时工资)。这种工作对AWK来说,太简单了。只需要输入这个命令:

awk '$3 > 0 {print $1, $2*$3}' emp.data

你应当得到这个结果:

Kathy 40

Mark 100

Mary  121

Susie  76.5

这个命令行告诉系统去运行awk, 使用引号内的程序的从emp.data中提取数据。包含于单引号内的部分是完整的awk程序。这由一个单次的“识别(模式)-执行(动作)”语句组成。‘模式‘$3>0,匹配了每一个'第三列(或者是 域)大于3' 的输入行,而 ‘动作’ { print $1, $2 * $3 } 打印了每一个符合要求的行的:第一个域的值,和第二、第三域的积。

如果你想打印出那些没有上班的员工们的名字,输入这行命令:

awk '$3 == 0 { print $1 }' emp.data                                                                                                                           

这里的‘模式’,$3 == 0 匹配上了所以第三个域为0的输入行,然后‘动作’ {print $1}打印它们的第一个域。

当你读这本书时,试着运行和修改展示出来的这些代码。大部分都非常短,你可以很快的了解awk是怎么样运行的。在UNIX系统,先前的两个分析在终端上将看上去和这个差不多:

$由系统决定

awk程序的结构

让我们暂时退一步看看到底发生了什么。在命令行前面,被引号包围的是awk程序,在这一章中的每一个awk系列都是由一个或多个“识别-执行”语句组成的:

patter {action}

patter {action}

......

awk的基本操作是一个接一个地扫描一连串输入行,寻找任何一个配对上的输入行。match的意思是由pattern决定的;$3>0代表的是"当这个条件为真时“。

每一个输入行根据每一个条件来

,对任何一个匹配的‘条件’,其相应的‘动作’都将会被执行。然后下一行又开始被读取并再次进行匹配。这将持续到所有的输入都被读取。

先前的程序就是典型的一个带‘模式’和‘动作’的例子。(先识别模式,然后判断是否执行)

$3 == 0 { print $1 }

这是单个语句;对每一行的第三个域,如果是零,打印第一个域的内容。

不是patten就是action,如果模式它没有对应的动作,比如

$3==0

所有匹配的都会打印出来,从emp.data将会打印第三个域为零的那两行:

如果只有动作没有有条件,在这里它将打印每一行的第一个域

运行AWK程序

有几种方法来运行AWK程序。你可以输入以下形式的命令行:

awk  'program' input files

运行这个在每一个特定的输入文件,你可以输入:     awk '$3==0  {print  $1}'  file1  file2    来打印出file1和file2中的每个满足第三个域为零那行的第一个域。

你可以省略命令行中的输入文件,直接输入: awk 'program'

在这个情况下awk会载入到program

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值