Quando você não fornecer nenhum arquivo, ack procurará todos os arquivos no diretório atual e nos subdiretórios. Se um arquivo contiver um padrão correspondente, ack imprime 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 ack , pesquise a opção -H ).
Já que ack não tem -n opção line grep , que imprimirá a linha com seu número de linha relativo, você tem duas opções para contornar esse problema.
Forçando ack print filename com -H :
ack -H pattern file
ou passando /dev/null como o segundo arquivo:
ack pattern file /dev/null