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.