web-dev-qa-db-ja.com

Apache AWStatsサーバーログからIPアドレスのみを取得するにはどうすればよいですか?

サーバーログ内の他のデータが混乱している中で、サイトのサーバーからIPアドレスを取得するのに問題があります。 Excelをクラックする前に、AWSからIPを削除するという、私が望むものの反対を見つけたので、それを行う方法があることを知っています。

cat web.log | awk '{$1=$2=$3=""}1' > web-no-ip.log

この種のことのためのステップバイステップまたはチートシートは素晴らしいでしょう。

1
Ben Racicot

IPアドレスはX.X.X.Xの一般的な形式であり、Xは[0,255]の間にあると想定しています。それを知っていると、grepは非常に見事に仕事をすることができます:

grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt

(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])は、先行ゼロを含む0〜255の任意の数値に一致します。たとえば、0、255、019などです。ただし、記述されているとおり、1.1.1.1.5(5オクテット)などに一致します。 。これは、IPV6アドレスも追跡しません。

ログにX.X.X.Xのような有効なIPアドレスのみが含まれていると予想され、Xが無効になることはないと想定できる場合は、はるかに単純な式を使用できます。

grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt
1
Andrew M.