Count number of occurrences of token in a file

bash, grep, shell

Solution

I think you're looking for

uniq --count

-c, --count prefix lines by the number of occurrences

Problem

I have a server access log, with timestamps of each http request, I'd like to obtain a count of the number of requests at each second. Using `sed`, and `cut -c`, so far I've managed to cut the file down to just the timestamps, such as: 22-Sep-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 What I'd love to get is the number of times each unique timestamp appears in the file. For example, with the above example, I'd like to get output that looks like: 22-Sep-2008 20:00:21 +0000: 1 22-Sep-2008 20:00:22 +0000: 3 22-Sep-2008 20:00:24 +0000: 2 I've used `sort -u` to filter the list of timestamps down to a list of unique tokens, hoping that I could use grep like ``` grep -c -f <file containing patterns> <file> ``` but this just produces a single line of a grand total of matching lines. I know this can be done in a single line, stringing a few utilities together ... but I can't think of which. Anyone know?

Original source