我有一个正在使用的命令
#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