`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.

スイッチのグーグル検索をいくつか行いましたが、結果が見つかりませんでした。単一のファイルからの結果の行番号を表示するためにどのように確認できますか?

回答:


21

ファイルを指定しないackと、現在のディレクトリとサブディレクトリ内のすべてのファイルが検索されます。ファイルに一致するパターンが含まれている場合、ackそのファイル名、行番号、およびパターンに一致した行を出力します。

この動作は1つのファイルには適用されません(ack documentationを参照して、-Hオプションを検索してください)。

whenにackは相対行番号と一致する行を出力する-nオプションline がないため、grepこの問題を回避するには2つの選択肢があります。

強制的にack印刷ファイル名-H

ack -H pattern file

または/dev/null、2番目のファイルとして渡す:

ack pattern file /dev/null

7

オプションで試すことができます--with-filename

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

この問題はバグとして提起され、問題はここに移動されまし


5

これにはオプションが必要です。ただし、存在しない場合は、コマンドラインでack余分なものを渡すことにより、検索対象の2つのファイルがあると考えるようにだますことができます/dev/null

ack function themes/README.txt /dev/null

grep(1)ちなみに、1つのファイルを検索している場合でも、同じトリックを使用してファイル名を表示できます。

grep function themes/README.txt /dev/null
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.