Insertar string antes de cada linea de un archivo
Alvaro Herrera
alvherre en alvh.no-ip.org
Lun Abr 16 15:59:14 CLT 2007
Yonathan Dossow escribió:
> $ perl -pe "s/^/gzip /;" < lista > lista_out
>
> $ cat lista_out
> gzip lala
> gzip lala con espacios
> gzip lala
> gzip mas lala
Esto no va a funcionar porque gzip va a creer que cuando recibe "lala
con espacios" son tres argumentos distintos. En cambio esto si
funciona, y no necesitas perl ni redirecciones estrafalarias:
$ while read line; do touch "$line"; done < lista
gzip "lala"
gzip "lala con espacios"
gzip "lala"
gzip "mas lala"
Esto crea los archivos mencionados (util para propositos de prueba). Y
esto otro:
$ while read line; do gzip "$line"; done < lista
los comprime. Da un error eso si:
gzip: lala: No such file or directory
lo cual es obvio porque hay un nombre repetido, pero eso no es un
problema porque el resultado final es el mismo.
Finalmente los borro, y tambien el archivo de prueba:
$ (cat lista | sed -e 's/$/.gz/'; echo lista) | while read line; do rm "$line"; done
Y nuevamente me tira un error:
rm: no se puede borrar «lala.gz»: No existe el fichero o el directorio
Lo cual es obvio, porque ya lo borró.
--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".
Más información sobre la lista de distribución Linux