[bcn-pm] manipular un fitxer canviant xifres negatives per un zero

Javier Arturo Rodriguez codehead a gmail.com
dll mar 17 03:14:07 PDT 2014


GOLF! ;-)

Ya sé que no debería hacer esto en un thread en el que escribe Xavi
Noria, pero si utilizamos el switch -l (automatic line‐ending
processing) podemos quitar las comillas y el newline, para una ganancia
neta de 3 puntos:

    perl -lpe'$_=$_<0?0:$_' dades.txt

Salut!

-Javier Arturo Rodríguez

On 2014-03-17 10:49 , Jose Luis Perez Diez wrote:
> El Monday 17 March 2014 09:44:43 Agud Pique, Enric va escriure:
>> Hola gent,
>>
>> una consulta. Tinc un fitxer que amb dades. Totes les dades estan en una sola columna. Vull convertir tots els números negatius en zero i guardar el resultat, tota la columna de nou. Estic fent servir el següent codi però no sé si vaig bé. Suposo que he de llegir linea a linea...fent un chomp($linea) i si detecta un numero inferior a zero que el canvii a zero, pero quan arribo en aquest apartat no sé si el codi detecta que el que li passo es un numero o no....
> Jo per aquest cas si fas servir un entorn  unix (linux,bsd,..) ho faria amb un oneliner:
> perl -pe'$_=0>$_?"0\n":$_' 
> que executa un programa semblant a aquest (mira perldoc perlrun per veure el codi real)
>
>                 while (my $col =<>) {
>                     $col = "0\n" if 0 > $col;
>                     print $col 
>                 }
>
> que et permet fer-ho servir com a filtre 
>
>  perl -pe'$_=0>$_?"0\n":$_' dades.txt | altres processos
>
> o per editar el fitxer 
>
>  perl -pie'$_=0>$_?"0\n":$_' dades.txt
>
> ...
>
> espero que et serveixi
>
> --
> jluis
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm at pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org



Més informació sobre la llista de correu Barcelona-pm