Wie färbt man Zeilen, die mit string1 beginnen, aber nicht mit string2 enden?

8

Ich starte eine wöchentliche crontab, die Informationen sammelt und eine Protokolldatei erstellt.

Ich habe ein Skript, das ich gegen diese wöchentliche Datei ausführe, um nur bestimmte Statuszeilen für meine Anzeige auszugeben.

%Vor%

Dies ist eine Beispielausgabe:

%Vor%

Gibt es einen Weg zu cat / grep / sed / awk / perl / der aktuellen Ausgabe, so dass alle Zeilen, die mit Redundancy oder Health beginnen, aber nicht in Full oder Ok enden bzw. erhalten koloriert?

Was ich sehen möchte, ist das

Ich habe versucht, die aktuelle Ausgabe ohne Erfolg nach | grep --color=auto \bRedundancy\w*\b(?<!Full)\|\bHealth\w*\b(?<!Ok) zu leiten. Jede Hilfe würde sehr geschätzt werden.

    
PCnetMD 23.01.2018, 21:02
quelle

2 Antworten

8

Mit jedem awk in irgendeiner Shell in einer UNIX-Box:

%Vor%

Sie sollten wirklich einen robusteren Ausdruck mit String-Vergleichen verwenden, anstatt mit der aktuellen losen Regexp:

%Vor%     
Ed Morton 23.01.2018 22:09
quelle
7

Verwenden von GNU grep:

%Vor%

-P verwendet PCRE für Lookbehind (was ich glaube nicht, dass grep dies unterstützt), |$ , damit es alle Zeilen ausgibt. Sie müssen den Lookbehind direkt vor dem Zeilenende verwenden.

    
ysth 23.01.2018 21:13
quelle

Tags und Links