Esta es una instantánea del registro de errores:
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channel
at com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:195)
at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:222)
at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:208)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:139)
at com.rabbitmq.client.impl.ChannelN.basicGet(ChannelN.java:645)
Hago el siguiente comando:
cat foo.log | grep ERROR para obtener un OP como:
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
¿Qué comando debo ejecutar para obtener la salida como
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channel
es decir, también grep la línea (s) después del patrón?
bash
command-line
grep
theTuxRacer
fuente
fuente

com.rabbitmq.clienttexto en la siguiente línea comienza desde el principio o tiene algunos espacios delante?Respuestas:
Solo haz un:
El
-A1le dice a grep que incluya 1 línea después del partido.-Bincluye líneas antes del partido, en caso de que también lo necesites.fuente
-Cincluye líneas tanto antes como después del partido (la 'C' significa 'contexto', creo).Para una forma más portátil, hay awk
¿O tal vez quieres seguir todas las líneas sangradas?
fuente
awkcomandos.He encontrado esta solución:
Donde
(\n(?=\s).*?)*significa:\nencontrar la siguiente línea(?=\s)donde se inicia desde el espacio en blanco.*?hasta el final de la línea(...)*Encuentra tales líneas varias vecesPD. Puede activar este patrón
\ncom\.rabbitmq.*?si la segunda línea comienza desde el espacio en blanco\sfuente