帮助构建 grep 输出

帮助构建 grep 输出

我有一个正在使用的命令

#cat test |grep "Ongoing Calls" |awk -F' ' '{print $3}'
40
2

如您所见,它返回 2 个值 40 和 2

我现在想将它们添加到一起并放入文件中 42

有任何想法吗

这里编辑的是测试文件中的内容 - 我想要的只是 OnGoing 调用中的值并将其加在一起

    Iedge Group                                               1
    RasIpAddr                                                 0.0.0.0/0
    SubnetIP
    SubnetMask
    Max Calls                                                 50 (0:-1)
    Max 911 Overflow Calls                                    0 (0:0)
    Ongoing Calls                                             2 (0:2)
    Ongoing Calls                                             40 (40:0)
    Max Src Hunting                                           0
    Max number of simultaneously allowed transfer calls       0
    Ongoing transfer calls                                    0
    Priority                                                  0
    Call Duration                                             0
    Idle TCP/TLS/SCTP Connection Timeout                               0
    Bi-directional TCP/SCTP connections                            enabled
    Capabilities                                              gateway
    SIP                                                       enabled
    H323                                                      disabled
    Zone

当我使用这个命令时

    awk '/Ongoing Calls/ { sum += 3 } END { print sum }' test `

如果“正在进行的呼叫”部分中没有任何内容,我会不断获得值 3

答案1

将您的awk脚本更改为

awk '{ sum += $3 } END { print sum }'

正如用户 @123 所指出的,整个管道可以用一次调用来替换awk

awk '/Ongoing Calls/ { sum += $3 } END { print sum }' test

答案2

我并不是说这比使用更好awk

sed -rn 's/Ongoing Calls *([0-9]+).*/\1/p' test | paste -sd+ | bc

相关内容