Tôi có nhật ký truy cập máy chủ, với dấu thời gian của mỗi yêu cầu http, tôi muốn nhận được số lượng yêu cầu ở mỗi giây. Sử dụng sed
và cut -c
, cho đến nay tôi đã quản lý để cắt file xuống chỉ còn các timestamps, chẳng hạn như:Đếm số lần xuất hiện mã thông báo trong một tệp
22-Tháng Chín-2008 20:00:21 +0000
22-Sep-2008 20:00:22 +0000
22-Sep-2008 20:00:22 +0000
22-Sep-2008 20:00:22 +0000
22-Sep-2008 20:00:24 +0000
22-Sep-2008 20:00:24 +0000
Điều tôi muốn đạt được là n số lần mỗi dấu thời gian duy nhất xuất hiện trong tệp. Ví dụ, với ví dụ trên, tôi muốn để có được đầu ra mà trông giống như:
22-Sep-2008 20:00:21 +0000: 1
22-Sep-2008 20:00: 22 0000: 3
22-Sep-2008 20:00:24 +0000: 2
tôi đã sử dụng sort -u
để lọc danh sách các timestamps xuống một danh sách các thẻ độc đáo, hy vọng rằng tôi có thể sử dụng grep như
grep -c -f <file containing patterns> <file>
nhưng điều này chỉ tạo ra một dòng của một số lượng lớn các dòng phù hợp.
Tôi biết điều này có thể được thực hiện trong một dòng, xâu chuỗi một vài tiện ích với nhau ... nhưng tôi không thể nghĩ về điều đó. Có ai biết không?
Lưu ý rằng với các bộ dữ liệu khác, bạn có thể cần phải sắp xếp (1) trước khi uniq (1), vì uniq sẽ chỉ nhóm điều chỉnh acent trùng lặp. –
Có, nhưng OP đã nói anh ấy sắp xếp mọi thứ nên tôi cho rằng anh ấy đang đứng đầu loại điều đó ... –
Tôi đã phải sử dụng 'uniq -c' trên OS X,' --count' đã cho tôi một lỗi. –