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.client
texto en la siguiente línea comienza desde el principio o tiene algunos espacios delante?Respuestas:
Solo haz un:
El
-A1
le dice a grep que incluya 1 línea después del partido.-B
incluye líneas antes del partido, en caso de que también lo necesites.fuente
-C
incluye 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
awk
comandos.He encontrado esta solución:
Donde
(\n(?=\s).*?)*
significa:\n
encontrar 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\s
fuente