Ich habe eine Datei mit ein paar Protokollzeilen.
Ich möchte Dateien zurückgeben, die das Wort 'fail' enthalten, aber das Muster nicht enthalten:
Failed any test here _fr in Pro-any text here
Also, wenn es enthält: _fr in Pro
Ignorieren Sie dann die Zeile, auch wenn sie das Wort fail enthält.
Antworten:
Betrachten wir diese Testdatei:
So finden Sie alle Zeilen, die Ihren Kriterien entsprechen:
So drucken Sie nur die Namen von Dateien mit Zeilen, die Ihren Kriterien entsprechen:
Wie es funktioniert:
Awk liest implizit eine Datei Zeile für Zeile durch. Die Bedingung
/[fF]ail/ && ! /_fr in Pro-/
stimmt mit jeder Zeile überein, die enthältFail
oderfail
aber nicht enthalten_fr in Pro-
. In awk&&
bedeutet logisch-und!
bedeutet logisch-nicht.Beides ablehnen
_fr in Pro-
und_en in Pro-
Betrachten Sie diese Testdatei:
So lehnen Sie beide Formulare ab:
quelle
[fr|en]
Stimmt mit einem der Zeichen übereinf
,r
,|
,e
, odern
. Das Formular für logisch-oder ist(fr|en)
. Weitere Informationen finden Sie in der aktualisierten Antwort.