Situasi:
Saya memiliki file besar (jutaan baris) yang berisi alamat IP dan port dari tangkapan jaringan beberapa jam, satu ip / port per baris. Baris dari format ini:
ip.ad.dre.ss[:port]
Hasil yang diinginkan:
Ada entri untuk setiap paket yang saya terima saat masuk, jadi ada banyak alamat duplikat. Saya ingin dapat menjalankan ini melalui skrip shell dari beberapa jenis yang akan dapat menguranginya ke baris format
ip.ad.dre.ss[:port] count
di mana countjumlah kemunculan alamat tertentu (dan port). Tidak ada pekerjaan khusus yang harus dilakukan, perlakukan port yang berbeda sebagai alamat yang berbeda.
Sejauh ini, saya menggunakan perintah ini untuk mengikis semua alamat ip dari file log:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
Dari sana, saya bisa menggunakan regex yang cukup sederhana untuk menghapus semua alamat ip yang dikirim oleh alamat saya (yang tidak saya pedulikan)
Saya kemudian dapat menggunakan yang berikut untuk mengekstrak entri unik:
sort -u ips.txt > intermediate.txt
Saya tidak tahu bagaimana saya bisa menggabungkan jumlah baris entah bagaimana dengan sortir.
-bgrkebetulan terlihat seperti mnemonik untukbigger, yang kami inginkan di atas.