Dado un archivo de entrada de gran tamaño que se parece a esto:Cómo escribir esto mejor en Perl
02/26/2012 08:54:38 Error:java.sql.Exception
02/26/2012 08:54:48 Error:java.sql.Exception
02/26/2012 08:56:05 Error:java.sql.Exception
02/26/2012 08:57:21 Error:java.sql.Exception
02/26/2012 08:59:29 Error:java.sql.Exception
02/26/2012 09:01:14 Error:java.sql.Exception
02/26/2012 09:08:48 Error:java.sql.Exception
02/26/2012 09:10:41 Error:java.sql.Exception
que estoy tratando de averiguar el recuento de errores por hora; es decir, Busco a un archivo de salida que tiene este aspecto:
02/26/2012 08 -> 5
02/26/2012 09 -> 3
Aquí es un script que está trabajando para mí:
#!/bin/perl
open(MYFILE, 'tata2');
my %table;
while (<MYFILE>) {
chomp;
$dtkey = substr $_, 0, 13;
$table{$dtkey}++;
}
close(MYFILE);
for my $key (keys %table) {
print "$key -> $table{$key}\n";
}
embargo, dada las características de Perl, estoy bastante seguro de que esto puede hacerse en menos líneas. Le agradecería mucho si puede proporcionar algunos ejemplos. Espero que sea útil para aquellos que quieran reducir las líneas de código escritas para lograr algo.
'use strict; use advertencias; ' – Ether
No Perl, pero' sed 's /:.*//' | uniq -c' –