Insertar string antes de cada linea de un archivo

Julio Pacheco tj en vtr.net
Mar Abr 17 10:30:11 CLT 2007


Roberto Bonvallet escribió:
> Morenisco:
>> P.D: debo aprender sed, debo aprender sed...
> 
> Ademas de comenzar a aprender a usar sed, awk y familia, existe la
> alternativa de realizar operaciones directamente desde un editor de texto.
> Tiene la ventaja que es interactivo, tienes feedback inmediato y la
> posibilidad de deshacer si te equivocas.  En el editor de mi preferencia,
> vim, puedes hacer lo que necesitas de varios modos:
> 
>   1. puedes agregar texto al principio de la linea presionando I y a
>   continuacion el texto.  Para hacer eso en todas las lineas del archivo,
>   antecedes con % y utilizas el comando "normal":
> 
>       :%normal Igzip 
> 
>   2. vas a la primera linea (gg), insertas el texto (Igzip ), presionas Esc
>   y luego repites el comando con . en las lineas que quieras.
> 
>   3. vas a la primera linea (gg), comienzas a grabar una macro (qq),
>   insertas el texto (Igzip ), presionas Esc, bajas a la linea siguiente y
>   terminas la macro (q).  Luego ejecutas la macro con @q.  Para ejecutarla
>   999 veces, presionas 999 en q
> 
>   4. puedes sustituir el principio de todas las lineas por el texto "gzip ":
> 
>       :%s/^/gzip /
> 
>   5. en el primer caracter, presionas Ctrl-V para iniciar una seleccion
>   rectangular.  Seleccionas un rectangulo que abarque toda la primera
>   columna del archivo, presionas I para insertar texto a la izquierda de la
>   seleccion, escribes "Igzip " y presionas Esc.
> 
> Si te equivocas, presionas u para deshacer e intentas de nuevo.  IMHO, la
> edicion interactiva es mucho mas facil y eficiente que conjuros obscuros en
> sed.

Completamente de acuerdo, siempre que trabajes con uno, o a lo mas unos pocos archivos.

Por otro lado, los conjuros oscuros en (sed|awk|perl|$lenguaje) tienen la ventaja de poder
aplicarse a varios (hartos) archivos de una vez(*), aparte de que pueden llegar a tener un
alto "astonishment value", i.e, dejar con la boca abierta al pajaro que te mira por encima
del hombro.


(*) Un ejemplo real, ocurrido hace ya algunos años:
	Sitio web desarrollado en MS Frontpage con más de 1000 archivos entre páginas, gráficos, 
audio, etc, posteriormente traspasado a un servidor Linux. Como a Windows le da(ba)lo 
mismo si los nombres están con mayúsculas o minúsculas, la mayor parte de los enlaces no 
funcionaban en Linux (Ej. <a href="file.htm"> en el código, File.HTM en disco, etc.)

Arreglarlo completo tomó exactamente 2 conjuros oscuros; El primero de ellos para 
normalizar los nombres de los archivos en disco, y el segundo para corregir las 
referencias de los enlaces. Para qué te cuento la cara del desarrollador, que ya se estaba 
haciendo la idea de arreglar todo a mano :-)


-- 
Julio Pacheco T.
Consultor Tecnológico
ProVectis S.A.



Más información sobre la lista de distribución Linux