¿Puedo canalizar un "tail -f" con datos mixtos que contengan JSON a jq para visualizar JSON?

¿Puedo canalizar un "tail -f" con datos mixtos que contengan JSON a jq para visualizar JSON?

Llevo un tiempo jugando e investigando pero no encuentro solución. Tengo algunos registros enormes, donde a veces también hay JSONS enormes. Pero para simplificar imagine lo siguiente:

mkdir logs
cd logs/
echo "$(date) [INFO] something" >> huge_log.log
echo "$(date) [INFO] something more" >> huge_log.log
echo "$(date) [INFO] Something with json: {\"foo\": \"bar\"}" >> huge_log.log
tail -n 5 -f huge_log.log | how_to_filter? | jq '.'

¿Es posible poder ver algo como esto (el json como salida de jq '.' sería):

Tue Aug 18 12:42:24 CEST 2020 [INFO] something
Tue Aug 18 12:42:29 CEST 2020 [INFO] something more
Tue Aug 18 12:43:05 CEST 2020 [INFO] Something with json: 
{
    "foo": "bar"
}

Entonces, de alguna manera, detecte automáticamente los json mientras imprime el registro y muéstrelos como sería el resultado para:

echo "{\"foo\": \"bar\"}" | jq '.'
{
  "foo": "bar"
}

Respuesta1

Lo siguiente funcionó para su ejemplo y me parece razonable. Estoy iterando sobre cada línea en el archivo de registro y si una línea coincide con la expresión regular "{.*}", se identifica como un objeto json y luego se formatea con jq. Sin embargo, si la expresión regular no coincide, se imprime normalmente. Lo probé, funciona muy bien también para archivos más grandes y complejos.

tail -n 15 huge_log.log | while read line ; do if echo $line | egrep "\{.*}" >/dev/null;json=$(echo $line | egrep -oh "\{.*}" | jq '.');then echo $line | awk -v json="$json" -F "\{.*}" '{printf "%s\n%s\n%s\n",$1,json,$2}'; fi;  done

información relacionada