在 bash 中格式化另一列

在 bash 中格式化另一列

为了检查有多少 IP 连接到我的服务器,我使用如下命令。

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

在第二列中显示唯一的 IP 以及该 IP 请求 Nginx 的次数,例如:

23 123.45.6.8
3 34.56.78.4
1 8.9.4.3

我想要第三个专栏来介绍这个 IP 的本地化。为此,我使用geoiplookup.

输出示例:

23 123.45.6.8 Netherlands
3 34.56.78.4 England
1 8.9.4.3 Netherlands

输出示例geoiplookup

GeoIP Country Edition: US, United States
#or
GeoIP Country Edition: FR, France

所以用“,”分割就足够了。

如何转换先前的输出以便在第三列上进行本地化线 ?

答案1

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk '{"geoiplookup "$2" | egrep -o Country.*[A-Z]{2}" | getline line; split(line,a," "); print $1, a[3], $2}'

相关内容