Als detaillierte here Sie eine positive Lookbehind-Klausel wollen, wie zum Beispiel:
grep -P '(?<=name=)[ A-Za-z0-9]*' filename
Die -P grep den Perl-Dialekt verwenden macht, sonst würden Sie wahrscheinlich entkommen müssen die Klammern. Sie können auch, wie an anderer Stelle angegeben, den Parameter -o
anfügen, um nur das auszugeben, was übereinstimmt. Der Teil in Klammern gibt an, dass Sie alphanumerische Zeichen und Leerzeichen verwenden möchten.
Der Vorteil der Verwendung einer positiven Lookbehind-Klausel besteht darin, dass der Text "name =" nicht Teil der Übereinstimmung ist. Wenn grep übereinstimmenden Text hervorhebt, wird nur der alphanumerische (und Leerzeichen) Teil hervorgehoben. Der Parameter -o zeigt auch nicht den Teil "name =" an. Und wenn Sie dies in ein anderes Programm wie sed überführen, das den Text erfassen und etwas damit machen kann, werden Sie den "name =" Teil nicht erfassen, obwohl Sie das auch mit Capturing Parenthess tun können.
unterstützt Grep eigentlich positiven Lookbehind? –
Ich machte mir auch deswegen Sorgen, also habe ich es auf meinem Windows-PC ausprobiert, und deshalb musste ich den -P-Parameter verwenden. Es unterstützt es wahrscheinlich in den anderen Geschmacksrichtungen (vielleicht nicht -G), aber ich wusste nicht die richtige Flucht für die Elemente. Ich benutze Grep 2.5.1. – markets
Ich bekomme das mit grep -P: grep: Unterstützung für die Option -P ist nicht in diese kompiliert Dies ist auf Ubuntu Hardy (Linux 2.6.24). Auf einem anderen Linux-Rechner fehlgeschlagen mit einer etwas anderen Fehlermeldung, und auch auf Solaris 10. –