awk脚本中的第二次计算

时间:2014-06-10 00:42:41

标签: bash awk

awk可能会让我头疼。我试图总结某一行的一定数量的行。

cat /home/logger/uplog.txt | awk 'NR==1,NR==7 {print $5}';

我知道这只给了我1到7字段的输出。我尝试的是

awk 'NR==1,NR==7 {print sum += $5}

但结果看起来没什么我想象的。那么我如何设法进行简单的计算,因为这是该脚本中的第二个awk-command,因此第二次读取。 BTW也包括这个问题,如何在awk语句中的一定数量的行之后写入/ dev / null,例如

(R=0,R<=181,R++)
for R in FNR>=181 /dev/null ;

任何暗示,提前谢谢。

1 个答案:

答案 0 :(得分:1)

您对awk语法,术语和行为非常困惑。在尝试再次编写awk脚本之前,您应该阅读并阅读Arnold Robbins的书Effective Awk Programming, Third Edition

让我们看看这是否有助于您当前的问题:

从每个输入记录的字段1到字段7打印是:

{
    for (i=1; i<=7; i++) {
        print $i
    }
}

而是打印这些字段的值的总和:

{
    sum=0
    for (i=1; i<=7; i++) {
        sum += $i
    }
    print sum
}

要将记录(默认为行)5到10写入/ dev / null将是:

NR>=5 && NR<=10 { print > "/dev/null" }

这会回答您当前的问题吗?