Ich versuche, ack-ist-besser-als-grep (ack) mit regulären Ausdrücken zu verwenden, um Zeilen und Snippets in meinem Code zu finden Repository. Mein Verständnis ist, dass ack Perl-derivative reguläre Ausdrücke verwendet, ist das richtig?
Ich bin mir jedoch nicht sicher, wie diese Abfragen funktionieren würden:
%Vor%Könnten sie verschiedene Ausgaben geben? Wenn ja, warum?
BEARBEITEN: In meinen Tests geben sie unterschiedliche Ergebnisse aus (zum Beispiel gibt das erste mehr Übereinstimmungen aus als die anderen). Sie markieren auch verschiedene Teile der gleichen Linien.
EDIT 2: Der Unterschied in der Ausgabe hängt offenbar mit der Hervorhebung zusammen (der Farbgebung der Ausgabe). Ich habe bemerkt, dass, wenn ich ack
mit --nocolor
starte, die Ausgabe der obigen Befehle gleich ist. Scheinbar läuft ack
mit der Standardfarbe, macht einen Teil der Ausgabe unsichtbar in meiner Maschine / Konfiguration. Ich benutze es auf einem GNOME-Terminal von Bash in Ubuntu 11.04.
Ich verstehe, dass ack Perl-abgeleitete reguläre Ausdrücke verwendet, ist das korrekt?
Ja. Tatsächlich wird ack
in Perl geschrieben und leitet die Ausdrücke nur an die interne Engine weiter.
Könnten sie verschiedene Ausgaben geben? Wenn ja, warum?
Die Ausdrücke sollten die gleichen Ergebnisse finden. Die Ausgabe unterscheidet sich jedoch möglicherweise noch, da ack
die Syntaxhervorhebung in der Ausgabe erlaubt (standardmäßig, sofern --nocolor
nicht angegeben ist) - es verwendet ANSI-Escape-Codes, um Treffer in der Ausgabe einzufärben, und 'foo'
hebt etwas anderes hervor als '.*foo'
(und die anderen Abfragen).
Nämlich in der folgenden Eingabe:
%Vor% Eine Abfrage für 'foo'
hebt nur Folgendes hervor: " foo
", während '.*foo'
" This is a foo
" hervorhebt.