Bashで別の列をフォーマットする

Bashで別の列をフォーマットする

サーバーに接続されているIPの数を確認するには、次のコマンドを使用します。

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

2番目の列には、一意のIPと、このIPがNginxを要求した回数が表示されます。例:

23 123.45.6.8
3 34.56.78.4
1 8.9.4.3

このIPのローカライゼーションを扱う3番目の列が欲しいです。このために私は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

したがって、「、」で割るだけで十分です。

前の出力を3番目の列のローカライゼーションに変換する方法一つワイヤーか。

ベストアンサー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}'

おすすめ記事