the*_*cer 39 command-line bash grep
这是错误日志的快照:
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)
Run Code Online (Sandbox Code Playgroud)
我执行以下命令:
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
Run Code Online (Sandbox Code Playgroud)
即,还 grep 模式后的行吗?
Jer*_*err 75
只需做一个:
grep -A1 ERROR
Run Code Online (Sandbox Code Playgroud)
该-A1
告诉grep来包括在比赛后1号线。-B
包括比赛前的行,以防您也需要。
对于更便携的方式,有 awk
awk '/ERROR/{n=NR+1} n>=NR' foo.log
Run Code Online (Sandbox Code Playgroud)
或者,也许您想要所有缩进的行?
awk '/^[^[:blank:]]/{p=0} /ERROR/{p=1} p' foo.log
Run Code Online (Sandbox Code Playgroud)