Mam dziennik dostępu do serwera, z sygnaturami czasowymi każdego żądania http, chciałbym uzyskać liczbę żądań w każdej sekundzie. Korzystanie sed
i cut -c
, dotychczas udało mi się wyciąć plik do zaledwie sygnatury czasowe, takie jak:Liczba wystąpień tokena w pliku
22-Sep-2008 20:00:21 +0000
22-wrz-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-wrz-2008 20:00:24 +0000
Co chciałbym dostać to n umber razy każdy unikalny znacznik czasu pojawia się w pliku. Na przykład, w powyższym przykładzie, chciałbym, aby uzyskać wyjście, które wygląda następująco:
22-Sep-2008 20:00:21 +0000: 1
22-wrz-2008 20:00: 22 +0000: 3
22-Sep-2008 20:00:24 +0000: 2
Użyłem sort -u
filtrować listę znaczników czasu w dół do listy unikatowych tokenów, mając nadzieję, że mogę użyj grep jak
grep -c -f <file containing patterns> <file>
, ale to tworzy pojedynczą linię wielkiej sumy pasujących linii.
Wiem, że można to zrobić w jednej linii, łącząc kilka narzędzi razem ... ale nie mogę o tym myśleć. Ktoś wie?
Należy pamiętać, że w przypadku innych zestawów danych konieczne może być posortowanie (1) przed uniq (1), ponieważ uniq będzie tylko grupować adj wyraźne duplikaty. –
Tak, ale OP już powiedział, że sortuje rzeczy, więc zakładałem, że jest na szczycie tego rodzaju rzeczy ... –
Musiałem użyć 'uniq -c' na OS X,' --count' dał mi błąd. –