-3

问题:

我有如下文件,其中包含几个数字和字符

  1. 字段:找到 IP 的时间(69.175.54.106= 17
  2. 字段:IP地址,
  3. 字段:国家名称(US-美国,CN-中国等),

如果您在下面看到 IP69.175.54.106已解析 283 次但不是 17 次,所以我想将第一个字段与匹配的第二个字段相加,第三个字段应该作为国家名称

17, 69.175.54.106,
283, 69.175.54.106, US
77, 58.77.59.10, CN
23, 58.77.59.10, 

输出应如下所示:

300, 69.175.54.106, US
100, 58.77.59.10, CN
4

1 回答 1

2

这样的事情可能对你有用:

awk 'BEGIN {FS=", *"}
{sum[$2]+=$1 }
! country[$2] && $3 != "" {country[$2] = $3}
END { for ( k in sum ) { print sum[k] ", " k ", " country[k] } }' INPUTFILE

在 Ideone.com 上查看它的实际应用

逐行

  1. BEGIN块中设置字段分隔符(以摆脱不需要的空格)
  2. 对于每一行,将时间添加到由 IP 索引的数组中
  3. 如果尚未存储国家代码,并且第三个文件不为空,则将其存储在另一个数组中(由 IP 索引)
  4. 最后为每个 IP 打印总和、IP 和国家代码
于 2013-01-29T08:43:31.837 回答