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

Agud Pique, Enric eagud.q a tv3.cat
dll mar 17 05:41:23 PDT 2014


Gràcies Javier i Jluis,

m'ha servit, però d'aquesta manera ja s'ha de tenir un nivell superior pq s'utilitzen expressions regulars, jo no hi hauria caigut mai! Gràcies

perl -lpe'$_=$_<0?0:$_' data2.dat > data3.dat

perl -pe'$_=0>$_?"0\n":$_' data.dat  > data3.dat

en bash algú sap com es faria, sense utilitzar perl? es només una pregunta, no voldria ferir els vostres sentiments cap al Perl!

Moltes gràcies a tots

Enric
________________________________________
De: Barcelona-pm [barcelona-pm-bounces+eagud.q=tv3.cat a pm.org] en nom de Javier Arturo Rodriguez [codehead a gmail.com]
Enviat el: dilluns, 17 / març / 2014 11:14
Per a: Barcelona Perl Mongers
Tema: Re: [bcn-pm] manipular un fitxer canviant xifres negatives per un zero

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 a pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org

_______________________________________________
llista dels Barcelona-pm
Barcelona-pm a 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