Wie kann ich bei einer großen Protokolldatei diese Zeilen ohne "Erfolg" anzeigen oder nicht mit "OK" beenden?
8
Wie kann ich bei einer großen Protokolldatei diese Zeilen ohne "Erfolg" anzeigen oder nicht mit "OK" beenden?
grep -Ev '(success|ok$)'
Antworten:
So entfernen Sie Zeilen, die eine der beiden Zeichenfolgen enthalten , insbesondere mit grep:
In einem Befehl laut Jordanms Kommentar:
oder:
oder:
In zwei Befehlen:
grep -v success file | grep -v 'ok$'
Beispiel:
So entfernen Sie Zeilen, die beide Zeichenfolgen enthalten , insbesondere mit grep:
Beispiel:
quelle
Ich würde awk versuchen
wo
/success/ { next ; }
Wort findensuccess
und Zeile überspringen/ok$/ { next ; }
Kleinbuchstaben findenok
und Zeile überspringen{ print ;}
implizit sonst: Zeile druckengemäß Vorschlag
kurz awk (danke an Stéphane Chazelas)
Das ist im Grunde nicht (Erfolg) und nicht (ok am Ende der Zeile)
Golf awk (danke an cas)
die regexp wiederverwenden und negieren
quelle
awk '!/success/ && !/ok$/'
wäre kanonischer.awk '! /success|ok$/'
Hinzufügen zu den obigen grep -Ev-Befehlen: Sie können verwenden
egrep -v 'success|ok$' filename
quelle
egrep
wird zugunsten vongrep -E
Da awk erwähnt wurde, wäre eine andere Alternative sed:
oder (neuere sed und zukünftige POSIX) dank Stéphane Chazelas
quelle
sed -r
zused -E
, dann das funktionieren wird in einiger BSDsed
zusätzlich zu (nicht zu alten Versionen von) GNUsed
.sed -E
wird in der nächsten Hauptausgabe der POSIX-Spezifikation erscheinen.