`ack` zeigt keine Zeilennummern in einer einzelnen Datei an


16

Ich benutze ack, um nach einer Zeichenfolge zu suchen. Wenn ich es ohne ein Dateiargument ausführe, erhalte ich Zeilennummern:

$> ack function
themes/README.txt
7:Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

sites/default/default.services.yml
48:    # - The dump() function can be used in Twig templates to output information

...

Wenn ich jedoch versuche, eine Datei anzugeben, erhalte ich keine Zeilennummern.

$> ack function themes/README.txt
Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

Ich habe nach einem Schalter gegoogelt, aber keine Ergebnisse gefunden. Wie kann ich mir Zeilennummern zu Ergebnissen einer einzelnen Datei anzeigen lassen?

Antworten:


21

Wenn Sie keine Datei angeben, ackwird nach allen Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen gesucht. Wenn eine Datei ein übereinstimmendes Muster enthält, ackdrucken Sie diesen Dateinamen, die Zeilennummer und die Zeile, die dem Muster entspricht.

Dieses Verhalten gilt nicht für eine Datei (siehe ack-Dokumentation , -HOption suchen ).

Seit wann ackkeine -nOptionszeile vorhanden ist grep, bei der die Zeile mit der relativen Zeilennummer abgeglichen wird, haben Sie zwei Möglichkeiten, um dieses Problem zu umgehen.

Erzwingen ackDruckdateinamen mit -H:

ack -H pattern file

oder /dev/nullals zweite Datei übergeben:

ack pattern file /dev/null

7

Sie können mit der Option versuchen --with-filename:

ack --with-filename 'function' themes/README.txt

Dieses Problem wird als Fehler gemeldet, und das Problem wurde hierher verschoben .


5

Dafür sollte es eine Option geben. Wenn dies nicht der Fall ist, können Sie sich vorstellen ack, dass zwei Dateien durchsucht werden müssen, indem Sie /dev/nullin der Befehlszeile ein Extra eingeben:

ack function themes/README.txt /dev/null

Mit demselben Trick können grep(1)Sie auch dann einen Dateinamen anzeigen, wenn Sie eine einzelne Datei durchsuchen:

grep function themes/README.txt /dev/null
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.