Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/05/2015, 10:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: grep y busqueda en cadena

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.