user2532296
user2532296

Reputation: 848

printing the number of times a element occurs in a file using regex

I have a long data similar to below

    16:24:59        0       0       0
    16:24:59        0       1       0
    16:25:00        0       1       0
    16:25:00        0       1       0
    16:25:00        0       2       0
    16:25:00        0       2       0
    16:25:00        1       0       1
    16:25:01        0       0       0
    16:25:01        0       0       0
    16:25:01        0       0       0
    16:25:01        0       0       0
    16:25:01        4       9       4
    16:25:02        0       0       0
    16:25:02        0       0       0
    16:25:02        0       0       0
    16:25:02        0       1       0
    16:25:02        1       9       1
    16:25:02        2       0       2

I wish to have a output where it prints the element in column 1, and the number of times it occurs. Below is what I expect. How can I do this?

    16:24:59        2
    16:25:00        5
    16:25:01        5
    16:25:02        6

How can I replace the above to

    t1        2
    t2        5
    t3        5
    t4        6
     .
     .
    tn        9 

Upvotes: 0

Views: 43

Answers (2)

dawg
dawg

Reputation: 103844

Just in case you want a grep and uniq solution:

$ grep -Eo '^\s*\d\d:\d\d:\d\d' /tmp/lines.txt | uniq -c
   2     16:24:59
   5     16:25:00
   5     16:25:01
   6     16:25:02

Or, if tab delimited, use cut:

$ cut -f 2 /tmp/lines.txt | uniq -c
   2 16:24:59
   5 16:25:00
   5 16:25:01
   6 16:25:02

Upvotes: 2

nu11p01n73R
nu11p01n73R

Reputation: 26667

It's pretty straight forward using awk

awk '{count[$1]++} END{ for ( i in count) print i, count[i]}'

Test

$ awk '{count[$1]++} END{ for ( i in count) print i, count[i]}' input
16:24:59 2
16:25:00 5
16:25:01 5
16:25:02 6

What it does?

  • count[$1]++ creates an associative array indexed by the first field.

  • END Action performed at the end of input file.

  • for ( i in count) print i, count[i] Iterate through the array count and print the values

Upvotes: 2

Related Questions