2017-02-26 5 views
1

Ich habe eine Protokolldatei. Ich möchte die Vorkommen der Zeichenfolgeregex, um Fehler im Protokoll zu identifizieren

„RC = x“ scannen Wenn es> = 1 ein Vorkommen wo RC = 0, dann ist nicht wahr ich kennzeichnen mag es als Versagen

Kann ich das tun als Shell-Funktion?

+0

Was hast du geschrieben? – codeforester

Antwort

1

Sie können grep für diesen Einsatz:

grep -q "RC = [^0]" logfile && { 
    echo "Logfile is a failure" 
    other commands 
    exit 
} 

Die -q setzt grep in Ruhe-Modus: keine Ausgabe, die [^0] passt zu jedem Wert ungleich Null für RC. Grep wird einen Fehlerstatus zurückgeben, wenn keine Übereinstimmungen gefunden werden und ein Erfolgsstatus, falls vorhanden. Die && ist eine bedingte "und" Also, wenn es irgendwelche Werte ungleich Null für RC gibt, dann wird die Grep erfolgreich sein und der Test ist ein Fehler.

Alternativ können Sie die grep in eine if Anweisung setzen. In diesem Fall:

if grep -s "RC = [^0]" logfile 
then 
    echo "Logfile is a failure" 
else 
    echo "Logfile is a success" 
fi 

Siehe man grep für mehr grep Optionen.

+0

'-s' unterdrückt nur Fehlermeldungen, aber die übereinstimmenden Zeilen werden weiterhin gedruckt. Hast du vielleicht "-q" gemeint? –

+0

@ BenjaminW. Du hast Recht. Ich habe meine Antwort angepasst. Vielen Dank. –

Verwandte Themen