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.

我已经进行了一些谷歌搜索,但是没有结果。如何确认在单个文件的结果中显示行号?

Answers:


21

当您不提供任何文件时,ack将在当前目录和子目录中搜索所有文件。如果文件包含匹配的模式,请ack打印该文件名,行号和匹配模式的行。

此行为不适用于一个文件(请参阅ack文档,搜索-H选项)。

由于when 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.