我正在使用 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.
我已经用谷歌搜索了一些交换机,但没有找到结果。如何获得确认以显示单个文件结果的行号?
答案1
当您不提供任何文件时,ack
将搜索当前目录和子目录中的所有文件。如果文件包含匹配的模式,则ack
打印该文件名、行号以及与模式匹配的行。
此行为不适用于一个文件(请参阅确认文档,搜索-H
选项)。
由于 whenack
没有-n
选项 line grep
,它将打印与其相对行号匹配的行,因此您有两种选择来解决此问题。
强制ack
打印文件名-H
:
ack -H pattern file
或/dev/null
作为第二个文件传递:
ack pattern file /dev/null
答案2
答案3
应该有一个选项。但如果没有,您可以通过在命令行上ack
传递额外的内容来欺骗认为有两个文件可供搜索:/dev/null
ack function themes/README.txt /dev/null
附带说明一下,grep(1)
即使您正在搜索单个文件,也可以使用相同的技巧来显示文件名:
grep function themes/README.txt /dev/null