use strict; use warnings; my %msgs; while (<DATA>) { s/^\s+//; chomp; $msgs{$_}++; } # Sort by number of occurrences and only show top 8: my $i = 0; for my $m (sort {$msgs{$b} <=> $msgs{$a}} keys %msgs) { print "$msgs{$m} $m\n"; $i++; last if $i == 8; } __DATA__ Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol unlock_ +page Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol generic +_file_read Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol generic +_file_write Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol generic +_file_mmap Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol generic +_file_sendfile Mar 9 08:15:05 gen-vcs11 kernel: kjslah: disagrees about versio +n of symbol zone_table Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol zone_ta +ble Mar 9 08:15:05 gen-vcs11 kernel: kjslahdisagrees about version +of symbol unlock_page Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol unlock_page Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol filemap +_fdatawrite Mar 9 08:15:05 gen-vcs11 kernel: kjslah: Unknown symbol find_or +_create_page
See also:
perldoc -q sort
In reply to Re: How do I read a log file that contents recurring log messages those are separated by newline characters?
by toolic
in thread How do I read a log file that contents recurring log messages those are separated by newline characters?
by WantToBeJediInPerl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |