`ack` не показывает номера строк в одном файле


16

Я использую ack для поиска строки. Когда я запускаю его без аргумента файла, я получаю номера строк:

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

...

Но когда я пытаюсь указать файл, я не получаю номера строк.

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

Я сделал поиск в Google, но не нашел результатов. Как мне получить возможность показывать номера строк в результатах из одного файла?

Ответы:


21

Когда вы не предоставите файл, ackбудет искать все файлы в текущем каталоге и подкаталогах. Если файл содержит соответствующий шаблон, ackвыведите это имя файла, номер строки и строку, которая соответствует шаблону.

Это поведение не относится к одному файлу (см. Документацию ack , поиск по -Hварианту).

Поскольку, когда ackнет -nстроки опций grep, которая будет печатать строку, соответствующую ее относительному номеру, у вас есть два варианта решения этой проблемы.

Принудительная ackпечать имени файла с помощью -H:

ack -H pattern file

или передать /dev/nullкак второй файл:

ack pattern file /dev/null

7

Вы можете попробовать с опцией --with-filename:

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

Эта проблема возникла как ошибка, и проблема была перемещена сюда .


5

Там должен быть вариант для этого. Но если нет, вы можете обмануть себя, ackдумая, что есть два файла для поиска, передав /dev/nullв командной строке дополнительный текст:

ack function themes/README.txt /dev/null

Кстати, тот же трюк можно использовать для grep(1)отображения имени файла даже при поиске в одном файле:

grep function themes/README.txt /dev/null
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.