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