Durum:
Birkaç saatlik ağ yakalamasından elde edilen IP adreslerini ve bağlantı noktalarını içeren büyük bir dosyam (milyonlarca satır) var, her satırda bir ip / bağlantı noktası. Çizgiler şu biçimdedir:
ip.ad.dre.ss[:port]
İstenen sonuç:
Günlük kaydı sırasında aldığım her paket için bir giriş var, bu yüzden çok sayıda yinelenen adres var. Bunu, biçimin satırlarına indirgeyebilecek bir tür kabuk betiği aracılığıyla çalıştırabilmek istiyorum.
ip.ad.dre.ss[:port] count
countbu belirli adresin (ve bağlantı noktasının) gerçekleşme sayısı nerede . Özel bir çalışma yapılmasına gerek yoktur, farklı bağlantı noktalarını farklı adresler olarak ele alın.
Şimdiye kadar, tüm ip adreslerini günlük dosyasından kazımak için bu komutu kullanıyorum:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
Bundan, adresim tarafından gönderilen (umursamadığım) tüm ip adreslerini kazımak için oldukça basit bir normal ifade kullanabilirim.
Daha sonra benzersiz girişleri çıkarmak için aşağıdakileri kullanabilirim:
sort -u ips.txt > intermediate.txt
Satır sayılarını bir şekilde sıralama ile nasıl toplayabileceğimi bilmiyorum.
-bgrtesadüfen bir anımsatıcı gibi göründüğünü seviyorumbigger, üstte istediğimiz şey bu.