状況:
数時間のネットワークキャプチャからのIPアドレスとポートを含む大きなファイル(数百万行)があり、1行に1つのIP /ポートがあります。行は次の形式です。
ip.ad.dre.ss[:port]
望ましい結果:
ロギング中に受け取ったパケットごとにエントリがあるため、重複したアドレスが多数あります。これをある形式のシェルスクリプトで実行できるようにしたいのですが、それをフォーマットの行に減らすことができます
ip.ad.dre.ss[:port] count
ここで、count
その特定のアドレス(およびポート)の発生数です。特別な作業を行う必要はありません。異なるポートを異なるアドレスとして扱います。
これまでのところ、私はこのコマンドを使用して、ログファイルからすべてのIPアドレスをスクレイピングしています。
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
それから、私はかなり単純な正規表現を使用して、自分のアドレスから送信されたすべてのIPアドレス(私は気にしません)をこすり落とすことができます
次に、以下を使用して一意のエントリを抽出できます。
sort -u ips.txt > intermediate.txt
どうやってソートで行数を集計できるのかわかりません。
-bgr
のニーモニックのように見える偶然にbigger
私たちが一番上に望むものです。