Si votre grep ne prend pas en charge -P ou --perl-regexp, et que vous pouvez installer un grep compatible PCRE, par exemple "pcregrep", il n'aura pas besoin d'options de ligne de commande comme GNU grep pour accepter le standard compatible Perl expressions, vous venez de courir
pcregrep "Ui\.(?!Line)"
Vous n'avez pas besoin d'un autre groupe imbriqué pour "Line" comme dans votre exemple "Ui. (?! (Line))" - le groupe externe est suffisant, comme je l'ai montré ci-dessus.
Permettez-moi de vous donner un autre exemple de recherche d'assertions négatives: lorsque vous avez une liste de lignes, renvoyée par «ipset», chaque ligne indiquant le nombre de paquets au milieu de la ligne, et que vous n'avez pas besoin de lignes avec zéro paquet, vous courir:
ipset list | pcregrep "packets(?! 0 )"
Si vous aimez les expressions régulières compatibles avec Perl et que vous avez perl mais que vous n'avez pas pcregrep ou que votre grep ne prend pas en charge --perl-regexp, vous pouvez utiliser des scripts perl sur une ligne qui fonctionnent de la même manière que grep:
perl -e "while (<>) {if (/Ui\.(?!Lines)/){print;};}"
Perl accepte stdin de la même manière que grep, par exemple
ipset list | perl -e "while (<>) {if (/packets(?! 0 )/){print;};}"