Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/05/2015, 13:43
startwav
 
Fecha de Ingreso: junio-2003
Mensajes: 122
Antigüedad: 21 años, 5 meses
Puntos: 0
Pregunta Respuesta: grep y busqueda en cadena

Cita:
Iniciado por AlvaroG Ver Mensaje
O sea, lo que tienes es un archivo con bloques como

una linea
mi casa tiene una palabro y está en madrid
otra línea
una línea más que menciona madrid
una línea extra

Y querés tener bloques de esta forma

mi casa tiene una palabro y está en madrid.
una línea más que menciona madrid

Me parece que lo mejor es usar awk un poco más. Asumiendo que la línea que menciona a madrid viene siempre después de la línea que contiene a palabro:

Código BASH:
Ver original
  1. awk '/'$PALABRO'/ { buscar=$NF; print } !/'$PALABRO'/ { if (buscar != "" && $0 ~ buscar) { print } }' "$ARCHIVO"

Con esto, al encontrar $PALABRO, definimos el término a buscar ($NF, el último campo de la línea).
De allí en más, cada vez que una línea contenga el valor de buscar, la imprimimos.
La prueba de que buscar no sea vacía es necesaria para evitar que se impriman todas las líneas hasta la primer ocurrencia de $PALABRO. La prueba de que la línea no contenga $PALABRO es necesaria para evitar que "mi casa tiene una palabro y está en madrid" se imprima dos veces.
@AlvaroG
todo es correcto tal y como indicas salvo que la otra palabra a buscar no estará inmeditamente después de la primera de las lineas q se muestra, podrá estar cuatro lineas mas abajo o tres.. :-/

de nuevo gracias Maestro!!
__________________
startwav

http://e-hosting.startwave.com/img/banner.gif
Internet Nunca ha estado más cerca de Tí. e-Hosting Start Wave Media . Todo lo que necesitas para tener presencia en Internet.
Servicios de Registro Dominios / DNS / HOSTING / Y MUCHO MÁS...