`ack` nie pokazuje numerów linii na jednym pliku

17

Używam ack do wyszukiwania ciągu. Kiedy uruchamiam go bez argumentu pliku, otrzymuję numery wierszy:

$> 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

...

Ale kiedy próbuję określić plik, nie otrzymuję numerów linii.

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

Zrobiłem trochę googling dla zmiany, ale nie znalazłem żadnych wyników. Jak uzyskać potwierdzenie, aby pokazywało mi numery linii na wynikach z jednego pliku?

użytkownik394
źródło

Odpowiedzi:

21

Jeśli nie podasz żadnego pliku, ackwyszuka wszystkie pliki w bieżącym katalogu i podkatalogach. Jeśli plik zawiera pasujący wzór, ackwydrukuj tę nazwę pliku, numer linii i linię, która pasowała do wzorca.

To zachowanie nie dotyczy jednego pliku (patrz dokumentacja potwierdzenia , wyszukaj -Hopcję).

Ponieważ gdy acknie ma -nlinii opcji grep, która wypisze linię dopasowaną do jej względnego numeru linii, masz dwie możliwości obejścia tego problemu.

Wymuszanie ackwydruku nazwy pliku za pomocą -H:

ack -H pattern file

lub przekazując /dev/nulljako drugi plik:

ack pattern file /dev/null
Cuonglm
źródło
7

Możesz spróbować z opcją --with-filename:

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

Ten problem został podniesiony, ponieważ błąd został przeniesiony tutaj .

taliezin
źródło
5

Powinna być na to opcja. Ale jeśli nie, możesz oszukać, ackże są dwa pliki do przeszukania, przekazując dodatkowy /dev/nullw wierszu poleceń:

ack function themes/README.txt /dev/null

Na marginesie, tę samą sztuczkę można wykorzystać, aby grep(1)pokazać nazwę pliku nawet podczas wyszukiwania pojedynczego pliku:

grep function themes/README.txt /dev/null
lcd047
źródło