awk '
/foo/ { save=1 }
/baz/ { p=1 }
/bar/ { if (p) { print out ORS $0; } p=0; save=0; out="" }
{ if (save) { if (out) { out = out ORS $0 } else { out = $0 } } }
' input
Comece salvando linhas se virmos um / foo /; decida que valem a pena imprimir se virmos um / baz /, e uma vez que vermos um / bar /, imprimamos as linhas salvas se vimos um / baz /.
Não consigo encontrar uma maneira mais inteligente de impedir que uma linha em branco (ORS) apareça no início da variável "out" sem testá-la manualmente (como eu).