这是错误日志的快照:
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)
我执行以下命令:
cat foo.log | grep ERROR
得到一个OP:
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
我应该执行什么命令来获得输出
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channel
即,也grep模式后的行?
只需做一个:
告诉 grep在
-A1
匹配后包含 1 行。-B
包括比赛前的行,以防您也需要。对于更便携的方式,有 awk
或者,也许您希望所有缩进的行都跟在后面?
我找到了这个解决方案:
哪里的
(\n(?=\s).*?)*
意思:\n
找到下一行(?=\s)
从空格字符开始的地方.*?
直到行尾(...)*
多次找到这样的行PS。
\ncom\.rabbitmq.*?
如果第二行从空格开始,您可以使用此模式\s
对于这个简单的任务,一个简单的方法是:
注意:选项和它的参数之间不能有空格。