Ack mit Regex - Verwirrung mit einfachen Abfragen

8

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.

    
Amelio Vazquez-Reina 18.07.2011, 19:09
quelle

1 Antwort

10
  

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.

    
Konrad Rudolph 18.07.2011, 19:20
quelle

Tags und Links