状況:
数時間のネットワーク キャプチャからの IP アドレスとポートを含む大きなファイル (数百万行) があり、1 行に 1 つの ip/port があります。行は次の形式です。
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
どういうわけかソートで行数を集計する方法がわかりません。