Tình huống:
Tôi có một tập tin lớn và địa chỉ IP và cổng từ mạng chụp vài giờ, một ip/cổng trên mỗi dòng. Dòng này là của định dạng này:Bash Script: đếm các dòng duy nhất trong tập tin
ip.ad.dre.ss[:port]
mong muốn kết quả:
Có một mục nhập cho mỗi gói tin tôi nhận được khi đăng nhập, vì vậy có rất nhiều các địa chỉ trùng lặp. Tôi muốn để có thể chạy thông qua một kịch bản shell của một số loại mà sẽ có thể làm giảm nó để dòng định dạng
ip.ad.dre.ss[:port] count
nơi count
là số lần xuất hiện của địa chỉ cụ thể (và cổng). Không có công việc đặc biệt nào phải được thực hiện, xử lý các cổng khác nhau như các địa chỉ khác nhau.
Cho đến nay, tôi đang sử dụng lệnh này để cạo tất cả các địa chỉ IP từ các log file:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
Từ đó, tôi có thể sử dụng một regex khá đơn giản để cạo ra tất cả các địa chỉ ip đã được gửi theo địa chỉ của tôi (mà tôi không quan tâm đến)
tôi sau đó có thể sử dụng sau đây để trích xuất các mục duy nhất:
sort -u ips.txt > intermediate.txt
tôi không biết làm thế nào tôi có thể tổng hợp các dòng c ounts bằng cách nào đó với phân loại.
Follow-up: Bây giờ tôi sử dụng nó theo nghĩa đen mỗi ngày. Làm sao tôi có thể sống sót mà không có nó. – Wug
Tôi đến đây để bỏ phiếu, nhưng nó đã được tôi bỏ phiếu. – Worker
Thêm một loại khác để có được kết quả phổ biến nhất ở trên cùng: 'sort ips.txt | uniq -c | sort -bgr' –