Positiver / negativer Lookahead mit Grep und Perl

Meine login.txt-Datei enthält folgende Einträge

abc def
abc 123
def abc
abc de
tha ewe

Wenn ich den positiven Lookahead mit Perl mache, erhalte ich das folgende Ergebnis

cat login.txt | perl -ne 'print if /(?)abc\s(?=def)/'
abc def

Wenn ich grep benutze, erhalte ich das folgende Ergebnis

cat login.txt | grep -P '(?<=abc)\s(?=def)'
abc def

Negative Lookahed-Ergebnisse wie folgt aus Perl und Grep.

 cat login | perl -ne 'print if /(?)abc\s(?!def)/'
abc 123
def abc
abc de

grep Ergebnis

cat login.txt | grep -P '(?<=abc)\s(?!def)'
abc 123
abc de

Perl stimmte mit dem def abc für den negativen Lookahead überein. aber es sollte nicht mit def abc übereinstimmen, da ich abc und dann def pattern überprüfe. grep liefert das korrekte Ergebnis.

Fehlt etwas in meinem Perlmuster?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage