• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 258
  • Last Modified:

Perl - sort and count

I have a file that has some info for user records, each record is separated by a new line such as:

dn: John Doe
alias: JDoe
contacts: 20101118
contacts: Visable

dn: Mary Doe
alias: MDoe
contacts: 20101118
contacts: Visable
contacts: 20101119
contacts: Hidden

dn: Bill Doe
alias: BDoe
contacts: 20101119
contacts: Hidden


I can pull the records out I want using - Perl -n00e ......

What I need to do is pull out the records that has more than two contacts: lines in them.

How can I pull each record out and do a count of how many lines they have in them that contain "contacts:"....

In the example above I need to be able to pull out the record for:

dn: Mary Doe
alias: MDoe
contacts: 20101118
contacts: Visable
contacts: 20101119
contacts: Hidden

but would like to get a count on all records on the number of contacts: lines in each one.

Thanks,
0
bt707
Asked:
bt707
1 Solution
 
farzanjCommented:
Try this:

 perl -ne 'BEGIN{$/="\n\n";} (@c) = /(contacts[:])/g; print if (@c>2)' xx' filename

Open in new window


If you also want to print the count of contacts, do this:
perl -ne 'BEGIN{$/="\n\n";} (@c) = /(contacts[:])/g; if (@c>2){print;print @c."\n"}' filename

Open in new window

0
 
bt707Author Commented:
Yes that worked well.

Thanks
0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now