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,
bt707Asked:
Who is Participating?
 
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.