[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: awk.. y awk II.



On Sun, Dec 10, 2006 at 10:57:12PM +0100, Santiago Vila wrote:
> On Fri, 8 Dec 2006, andmarti@gmail.com wrote:
> 
> > Hola Gente. Les paso a contar. Tengo en un archivo algo como lo siguiente:
> > 
> > PRINCIPIO
> > texto1
> > FIN
> > textobasura
> > PRINCIPIO
> > texto2
> > FIN
> > textobasura
> > 
> > Estaba tratando con awk de obtener texto1 y texto2, pero me mostraba no
> > solo eso sino también los delimitadores PRINCIPIO y FIN.
> 
> Bueno, te han dado ya varias soluciones, pero no puedo aguantarme sin
> darte la mía :-)
> 
> Si lo quieres todo junto:
> 
> #!/usr/bin/awk -f
> /^FIN$/ { estado = 0 }
> estado == 1
> /^PRINCIPIO$/ { estado = 1 }
> 
> O si quieres especificar qué bloque es el que quieres:
> 
> #!/usr/bin/awk -f
> /^FIN$/ { estado = 0 }
> estado == 1 && v == n
> /^PRINCIPIO$/ { estado = 1; v++ }
> 
> Para usar lo anterior basta con hacer algo como esto:
> 
> ./extrae-bloque -v n=1 fichero-de-texto
> 
> Espero que te guste.

Muy bueno y cortito. Gracias.

Ahora lo que estaba tratando de hacer es que elimine de varias líneas el
texto contenido entre PRINCIPIO y FIN.

He estado un par de horas y sin éxito aún, ya que usando .*, en casos como 
PRINCIPIO algo FIN algo2 PRINCIPIO algo3 FIN, me borra
"algo FIN algo2 PRINCIPIO algo3".
Probé delimitando con espacios en vez de con \n pero tampoco llegué a
nada.

Muchas gracias a todos por las soluciones anteriores.
-- 
Andrés M.
---------------------------------------------



Reply to: