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