Wie kann ich bei einer großen Protokolldatei diese Zeilen ohne "Erfolg" anzeigen oder nicht mit "OK" beenden?
Wie kann ich bei einer großen Protokolldatei diese Zeilen ohne "Erfolg" anzeigen oder nicht mit "OK" beenden?
Antworten:
So entfernen Sie Zeilen, die eine der beiden Zeichenfolgen enthalten , insbesondere mit grep:
In einem Befehl laut Jordanms Kommentar:
grep -Ev 'success|ok$'
oder:
grep -ve success -e 'ok$'
oder:
grep -v 'success
ok$'
In zwei Befehlen:
grep -v success file | grep -v 'ok$'
Beispiel:
$ cat file
success something else
success ok
just something else
$ grep -Ev 'success|ok$'
just something else
$ grep -v success file | grep -v 'ok$'
just something else
So entfernen Sie Zeilen, die beide Zeichenfolgen enthalten , insbesondere mit grep:
grep -v 'success.*ok$' file
Beispiel:
$ cat file
success something else
success ok
just something else
$ grep -v 'success.*ok$' file
success something else
just something else
Ich würde awk versuchen
awk '/success/ { next ; } /ok$/ { next ; } { print ;}' file
wo
/success/ { next ; }
Wort finden success
und Zeile überspringen/ok$/ { next ; }
Kleinbuchstaben finden ok
und Zeile überspringen{ print ;}
implizit sonst: Zeile druckengemäß Vorschlag
kurz awk (danke an Stéphane Chazelas)
awk '!/success/ && !/ok$/'
Das ist im Grunde nicht (Erfolg) und nicht (ok am Ende der Zeile)
Golf awk (danke an cas)
awk '! /success|ok$/'
die regexp wiederverwenden und negieren
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
egrep
wird zugunsten vongrep -E
Da awk erwähnt wurde, wäre eine andere Alternative sed:
sed '/success/d;/ok$/d' file
sed -e '/success/d' -e '/ok$/d' file
oder (neuere sed und zukünftige POSIX) dank Stéphane Chazelas
sed -E '/success|ok$/d' file
sed -r
zu sed -E
, dann das funktionieren wird in einiger BSD sed
zusätzlich zu (nicht zu alten Versionen von) GNU sed
. sed -E
wird in der nächsten Hauptausgabe der POSIX-Spezifikation erscheinen.
grep -Ev '(success|ok$)'