Dies ist eine Momentaufnahme des Fehlerprotokolls:
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)
Ich mache den folgenden Befehl:
cat foo.log | grep ERROR
um ein OP zu bekommen als:
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
Welchen Befehl soll ich ausführen, um die Ausgabe als zu erhalten?
06:16:29,933 ERROR EmailRMManager$:45 - Exception In get Message
com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channel
dh grep auch die Zeile (n) nach dem Muster?
bash
command-line
grep
theTuxRacer
quelle
quelle
com.rabbitmq.client
Text auf der nächsten Zeile beginnt mit dem begginning oder haben einige Räume vor ihm?Antworten:
Mach einfach ein:
Das
-A1
fordert grep auf, 1 Zeile nach dem Match einzuschließen.-B
schließt Zeilen vor dem Spiel ein, falls Sie das auch brauchen.quelle
-C
schließt Zeilen sowohl vor als auch nach dem Spiel ein (das "C" steht, glaube ich, für "Kontext").Für eine tragbarere Art gibt es awk
Oder möchten Sie, dass alle eingerückten Zeilen folgen?
quelle
awk
Befehle funktionieren.Ich habe diese Lösung gefunden:
Wo
(\n(?=\s).*?)*
bedeutet:\n
nächste Zeile finden(?=\s)
Wo beginnt das Leerzeichen?.*?
bis zum Zeilenende(...)*
Finde solche Zeilen mehrmalsPS. Sie können dieses Muster rasen,
\ncom\.rabbitmq.*?
wenn die zweite Zeile mit Leerzeichen beginnt\s
quelle