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 originalawk '/'$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.