Arrays 阵列输出

Arrays 阵列输出,arrays,awk,Arrays,Awk,我有一个ip列表数组 ip_array=['192.168.1.100' '192.168.1.101' '192.168.1.102' '192.168.1.103' '192.168.1.104' '192.168.1.105' '192.168.1.106' '192.168.1.107' '192.168.1.108' '192.168.1.109' '192.168.1.110'] 我想对ip_阵列运行iptables输出并获得结果。 e、 g 从我之前的帖子中,我了解到我可以使用a

我有一个ip列表数组

ip_array=['192.168.1.100' '192.168.1.101' '192.168.1.102' '192.168.1.103' '192.168.1.104' '192.168.1.105' '192.168.1.106' '192.168.1.107' '192.168.1.108' '192.168.1.109' '192.168.1.110']
我想对ip_阵列运行iptables输出并获得结果。 e、 g

从我之前的帖子中,我了解到我可以使用awk获取字节信息

iptables -L RRDIPT -vnx -t filter |awk '!/destination/{a[$9]+=$2}END{for(item in a){total+=a[item];dl[item]=a[item];printf item"-"a[item]}}'
但由于ip地址不断变化,我希望输出的格式相同

i.e bytesof 192.168.1.100, bytesof 192.168.1.102, bytesof 192.168.1.103, bytesof 192.168.1.104.......bytesof 192.168.1.110
我想看看下面的输出

[3594009427,0,11590,0,0,0,230477883,0,0,0,0]
我试着使用数组

iptables -L RRDIPT -vnx -t filter |awk '!/destination/{a[$9]+=$2}END{for(item in a){if(item==ip_array[i]){dl[i]=a[item];printf dl[i];}else{dl[i]=0}i+=i;}}'
我将
dl
声明为全局数组,但似乎无法访问值,例如
dl[0]
,以进行进一步处理

有人能帮忙吗?

试试这个:

iptables ... | awk 'BEGIN { base="192.168.1"; startrange=100; endrange=110 } NR > 1 { a[$9] += $2} END {for (i=startrange; i<=endrange; i++) {ip = base "." i; if (! a[ip]) a[ip] = 0; print ip, a[ip]}}'

我害怕格式化这个问题:我也害怕,格式化这个问题我很勇敢;)-但现在有人来回答;)如果OP把他要找的东西的样本输出放进去,我会回答的。。向人们道歉,n00b给stackoverflow。SiegeX我正在寻找一个结构化输出,即,我想获得ip地址的字节是活跃的。如果ip地址不是活跃的,我需要返回0。对于上述iptables输出,我希望看到以下输出3594009427,011590,0,0,0230477883,0,0,0,0,即字节数192.168.1.100、字节数192.168.1.102、字节数192.168.1.103、字节数192.168.1.104…….字节数192.168.1。110@user字体我很高兴这对你有帮助。不要忘记将你的问题的答案标记为已接受(当它们是可接受的)。
iptables ... | awk 'BEGIN { base="192.168.1"; startrange=100; endrange=110 } NR > 1 { a[$9] += $2} END {for (i=startrange; i<=endrange; i++) {ip = base "." i; if (! a[ip]) a[ip] = 0; print ip, a[ip]}}'
192.168.1.100 9196
192.168.1.101 0
192.168.1.102 0
192.168.1.103 0
192.168.1.104 21009126
192.168.1.105 0
192.168.1.106 0
192.168.1.107 10333
192.168.1.108 0
192.168.1.109 0
192.168.1.110 120