微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将模式之间的第四场数据相加

如何解决将模式之间的第四场数据相加

假设我的数据是:

* dnet * 1234 1.2

1个端口* 12 2.3

3端口1 * 34 0.2

7 * 15 0.1

* dnet * 234 0.2

2 * 12 0.1

4 * 123 * 234 1.2

字段之间用空格隔开。

在此,我想获取每个* dnet中存在的第4个数据字段的总和。有些字段具有第四字段数据,有些则没有。我想要每个* dnet单独的第4个字段总和值。

我尝试使用awk,但无法获取。如果有人帮助,将非常感激。

上面的输出看起来像

* dnet * 1234 1.2 2.5

* dnet * 234 0.2 1.2

解决方法

对此评论发表了评论,并做了一些简化……

awk '
    # look for header line
    $1=="*dnet" {
        # print any previously calculated sum
        if (header) print header,sum

        # reset sum for next block of lines
        sum = 0

        # save new header line
        header = $0

        # skip remaining actions
        next
    }

    # if we get here,we know this is not a header line
    # if there is a 4th field,add it to the sum
    $4 {
        sum += $4
    }

    END {
        # print the final sum
        if (header) print header,sum
    }
' datafile

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。