2012-11-27 12 views
14

co byłoby polecenie policzyć ile razy widzieliśmy pewną linię przez godzinę lub przez minutę?linie count przez godzinę

Plik:

Nov 26 08:50:51 
Nov 26 08:50:51 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:40 

Wyjście chciałbym zobaczyć:

przez minutę:

Nov 26 08:50 2 
Nov 26 08:51 5 

przez godzinę:

Nov 26 08  7 
+0

Dziękuję wszystkim za odpowiedzi :) pomogło . – Jola

+1

Co się stanie, jeśli data się zmieni? Czy chcesz uzyskać dane wyjściowe o 08:50 we wszystkich dniach lub o 08:50 każdego dnia? –

Odpowiedz

26

Można to zrobić z uniq :

$ uniq -w9 -c file  # by hour 
     7 Nov 26 08:50:51 
$ uniq -w12 -c file  # by minute 
     2 Nov 26 08:50:51 
     5 Nov 26 08:51:09 

-w porównać nie więcej niż pierwszych n znaków.

-c linie prefiksu według liczby wystąpień.

+4

+1 bardzo oszczędny – kev

+0

„ale co jeśli dzień <10 są pisane bez wiodącym 0? Oh czekać o_O To zadziała x_X”. Dobra robota +1 – Utopik

+1

To jest świetne, ale muszę podkreślić, że to rozwiązanie jest tylko dla systemu Linux. 'Uniq' w * BSD (w tym OSX) nie zawiera opcji' -w'. – ghoti

1

przez godzinę:

awk '{split($3,a,":");b[$1" "$2" "a[1]]++}END{for(i in b)print i,b[i]}' your_file 

testowane poniżej:

> awk '{split($3,a,":");b[$1" "$2" "a[1]":"a[2]]++}END{for(i in b)print i,b[i]}' temp 
Nov 26 08:50 2 
Nov 26 08:51 5 
> 

na minutę:

awk '{split($3,a,":");b[$1" "$2" "a[1]":"a[2]]++}END{for(i in b)print i,b[i]}' your_file 

testowane poniżej

> awk '{split($3,a,":");b[$1" "$2" "a[1]]++}END{for(i in b)print i,b[i]}' temp 
Nov 26 08 7 
2

awk jedno-liner daje liczyć przez godzinę i minutę w jednym ujęciu:

awk -F: '{h[$1]++;m[$1":"$2]++;}END{for(x in h)print x,h[x]; print "---"; for(x in m)print x,m[x]}' file 

testowym

kent$ echo "Nov 26 08:50:51 
Nov 26 08:50:51 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:09 
Nov 26 08:51:40"|awk -F: '{h[$1]++;m[$1":"$2]++;}END{for(x in h)print x,h[x]; print "---"; for(x in m)print x,m[x]}'  

wyjście

Nov 26 08 7 
--- 
Nov 26 08:50 2 
Nov 26 08:51 5 
+1

Dzięki za to, właśnie tego potrzebowałem. robienie fajki i sortowanie "| sort "również może uzyskać wszystko we właściwej kolejności. – dgig