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

Jose Luis Perez Diez jluis a escomposlinux.org
dll mar 17 06:15:44 PDT 2014


El Monday 17 March 2014 12:01:48 Xavier Noria va escriure:
> 2014-03-17 11:14 GMT+01:00 Javier Arturo Rodriguez <codehead a gmail.com>:
> 
> 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
> 
> 
>  perl -ple 's/-.*/0/' foo.txt
> 
> Recuerda que -p imprime lo que sea que tenga $_ despues del codigo, no hace
> falta setearla a si misma :).

No se si los switches a emplear forman parte del GOLF. Como '.' no hace match con \n en esta regegex, podemos ahorrar otro golpe:
 
perl -pe 's/-.*/0/' foo.txt

pero dado que el OP no especifica que pasa si la linea no contiene un numero, ni el formato de estos, lo mas corto y que menos altera la entrada que se me ocurre es:

perl -lpe '$_=0if0>$_' foo.txt


He estado tentado a contestar desde el mobil y todo.

--
jluis






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