`ack` não mostra números de linha em um único arquivo


16

Estou usando o ack para procurar uma string. Quando o executo sem um argumento de arquivo, obtenho números de linha:

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

...

Mas quando tento especificar um arquivo, não recebo números de linha.

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

Eu pesquisei no Google por uma opção, mas não encontrei resultados. Como faço para confirmar para me mostrar os números de linha nos resultados de um único arquivo?

Respostas:


21

Quando você não fornecer nenhum arquivo, ackprocurará todos os arquivos no diretório e subdiretórios atuais. Se um arquivo contiver um padrão correspondente, ackimprima esse nome de arquivo, o número da linha e a linha que corresponde ao padrão.

Esse comportamento não se aplica a um arquivo (consulte a documentação da confirmação , procure a -Hopção).

Como quando acknão tem -nlinha de opção grep, que imprimirá a linha correspondente ao seu número de linha relativo, você tem duas opções para contornar esse problema.

Forçando o acknome do arquivo de impressão com -H:

ack -H pattern file

ou passando /dev/nullcomo o segundo arquivo:

ack pattern file /dev/null

7

Você pode tentar com a opção --with-filename:

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

Esse problema foi levantado como bug e o problema foi movido para aqui .


5

Deve haver uma opção para isso. Mas se não houver, você pode ackpensar que existem dois arquivos para pesquisar, passando um extra /dev/nullna linha de comando:

ack function themes/README.txt /dev/null

Em uma nota lateral, o mesmo truque pode ser usado para grep(1)mostrar um nome de arquivo, mesmo quando você estiver pesquisando em um único arquivo:

grep function themes/README.txt /dev/null
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.