Wenn Ihr grep -P oder --perl-regexp nicht unterstützt und Sie PCRE-fähiges grep installieren können, z. B. "pcregrep", benötigt es keine Befehlszeilenoptionen wie GNU grep, um Perl-kompatibles reguläres zu akzeptieren Ausdrücke, du rennst einfach
pcregrep "Ui\.(?!Line)"
Sie benötigen keine weitere verschachtelte Gruppe für "Line" wie in Ihrem Beispiel "Ui. (?! (Line))" - die äußere Gruppe ist ausreichend, wie ich oben gezeigt habe.
Lassen Sie mich Ihnen ein weiteres Beispiel für negative Aussagen geben: Wenn Sie eine Liste von Zeilen haben, die von "ipset" zurückgegeben werden, wobei jede Zeile die Anzahl der Pakete in der Mitte der Zeile anzeigt und Sie keine Zeilen mit null Paketen benötigen, Sie nur Lauf:
ipset list | pcregrep "packets(?! 0 )"
Wenn Sie Perl-kompatible reguläre Ausdrücke mögen und Perl haben, aber kein pcregrep haben oder Ihr grep --perl-regexp nicht unterstützt, können Sie einzeilige Perl-Skripte verwenden, die genauso funktionieren wie grep:
perl -e "while (<>) {if (/Ui\.(?!Lines)/){print;};}"
Perl akzeptiert stdin genauso wie grep, z
ipset list | perl -e "while (<>) {if (/packets(?! 0 )/){print;};}"