Duda con grep

Hola chicos, continúo en mi odisea para terminar mi script de una vez.

Ahora tengo un problema que tampoco encuentro solución, quiero hacer un grep a la salida del comando lshal, pero filtrándome el párrafo que contenga una palabra. ¿Se puede hacer esto?

La idea sería la siguiente:

lshal |grep block.device = '/dev/hdb' (string)

Y me devuelve esto:

block.device = '/dev/hdb' (string)

Y lo que yo quiero es que me devuelva el párrafo en el que está esa línea.

PD: Tal vez con cut en vez de con grep?

Muchas gracias por adelantado.
buenas, creo que grep filtra sólo líneas. había una petición de que se incluyera en grep la opción -p para filtrar párrafos pero por lo que se ve no parecen muy entusiasmados con la idea.

en vez de eso podrías usar awk indicando que los "registros" están separados por una línea en blanco, porque un párrafo es unas cuantas líneas seguidas de una línea en blanco (creo [tomaaa] ).

lshal | awk 'BEGIN{RS=""} /block.device = '/dev/hdb' (string)/{print}'


EDIT: se me olvidó proteger los caracteres especiales...

lshal | awk 'BEGIN{RS=""} /block.device = '\''\/dev\/hdb'\'' \(string\)/{print}'
1 respuesta