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

Jose Luis Perez Diez jluis a escomposlinux.org
dll mar 17 02:49:32 PDT 2014


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


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