Insertar string antes de cada linea de un archivo

Roberto Bonvallet rbonvall en alumnos.inf.utfsm.cl
Lun Abr 16 18:59:35 CLT 2007


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.

Saludos!
-- 
Roberto Bonvallet


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