So können Sie basierend auf einer Suche bei Bedarf das Ergebnis anpassen und einfärben

So können Sie basierend auf einer Suche bei Bedarf das Ergebnis anpassen und einfärben

Hallo, ich habe eine Protokolldatei mit vielen Informationen und es ist ziemlich schwierig, das zu finden, wonach ich suche. Deshalb bin ich zu diesem Befehl gekommen, der mir nur das zeigt, was ich im Protokoll sehen möchte. Er fungiert als Listener, wenn das Muster übereinstimmt, und zeigt mir nur die Suchergebnisse an.

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\""

Und funktioniert ok, das Problem ist, wenn ich ein weiteres Grep weiterleite

tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"jsonKeyOne\"" | GREP_COLOR='01;31' egrep --color=always "\"jsonKeyTwo\""

Ich denke, das funktioniert nicht, denn wenn ich das eine in das andere weiterleite, da das Ergebnis des ersten nicht die Bedingung des zweiten enthält, wird nichts angezeigt. Deshalb möchte ich beide (oder mehr) Grep-Operationen auf die gesamte Datei anwenden und jeder Zeichenfolge einfach eine andere Farbe geben, um den Unterschied leichter zu erkennen.

HINWEIS: Wenn ich am Ende :|$ hinzufüge, fungiert es als normales Ende und zeigt mir viele zusätzliche Informationen, die ich nicht haben möchte.

 tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\":|$"

Antwort1

Vorzugsweise verwenden:

grep -e 'jsonKeyOne' -e 'jsonKeyTwo'

…zu OR Ihrer Begriffe. Abhängig von Ihrer grep-Variante ist auch -E 'jsonKeyOne|jsonKeyTwo' möglich. Dies ist die schnellste Option mit nur den Begriffen.

Die unterschiedlichen Farben funktionieren folgendermaßen: Nur der erste Term ist farbig und alle anderen Linien sind ungefärbt, der nächste Term hat eine andere Farbe und alle anderen Linien auch … bis zum letzten Term mit seiner Farbe und auch allen anderen Linien.

Entweder grep oder Syntaxhervorhebung, besser nicht beides.

verwandte Informationen