http://qs321.pair.com?node_id=440282


in reply to [off-site] Bash + Perl oneliners basics

cat /var/log/httpd/access_log | perl -l -a -n -e 'print $F[6]' | sort +| uniq -c | sort -n | tail -10
Hmm. A Useless Use of Cat, using Perl like it was awk, and then chaining together a few other tools like forking is free. Hmm.

I'd probably have written that as:

@ARGV = qw(/var/log/httpd/access_log); my %count; while (<>) { my ($f) = (split)[6]; $count{$f}++; } my $n = 0; for (sort {$count{$b} <=> $count {$a}) { print "$_\n"; last if ++$n >= 10; }
I bet mine runs with 1/4th the CPU.

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.