GNU/Linux >> Linux の 問題 >  >> Linux

ack で複数のパターン (単語) を検索しますか?

ag の場合 、verion 0.19.2 の時点で、デフォルトはディレクトリとファイルを再帰的に検索することです。

複数のパターンを検索するには、ack と同様の構文を使用できます。

ag 'pattern1|pattern2'

pattern1 の両方を検索します と pattern2 .

再帰的に検索したくない場合は、スイッチ --depth NUM で検索深度を 1 に設定できます。

したがって、

ag 'pattern1|pattern2' --depth 1

両方のパターンについて、現在のディレクトリでのみ検索します。


これで十分です:

ack -R 'string1|string2'

-R として がデフォルトです。省略できます:

ack 'string1|string2'

man ack から :

<ブロック引用>

-r-R 、 -- 再帰

サブディレクトリに再帰します。これはデフォルトであり、grep との互換性のためにここにあるだけです。 --no-recurseoff にするためにも使用できます。

/path/to/patterns.file などのファイルからパターンを取得する場合は、次を使用できます。

ack "$(cat /path/to/patterns.file)"

または同等:

ack "$(< /path/to/patterns.file)"

grep -f に完全に相当するものが見つかりません .


ack コマンドは、パイプと一緒にストリングすることもできます。たとえば、最初の ack は、pattern1 を含むファイルを見つけます。 次に、それを別の ack にパイプして、それらのファイルだけで pattern2 を検索します

ack -l 'pattern1' | ack -x 'pattern2'

-l パラメータは、(一致するテキストではなく)一致するファイルをリストすることを意味します。 -x パラメータは、それにパイプされたファイルだけを検索することを意味します。これは、次の ack 検索のためにファイルを絞り込むことに似ています。

ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'

これは AND です 演算子であり、他のソリューションで指定された OR 演算子ではありません。


Linux
  1. systemctlを使用して複数のサービスインスタンスを管理する

  2. LinuxでPyenvを使用して複数のPythonバージョンを管理する方法

  3. Sedコマンドで一度に複数のパターンを使用する

  1. ログを使用してS3バケット内を検索しますか?

  2. GUIでファイルを検索しますか?

  3. Unix ソートで複数のキーをソートする

  1. ターミネーターを使用して複数のSSHセッションにコマンドを送信する

  2. 複数のパターンでGrepを実行する方法は?

  3. 大文字と小文字を区別しないパターンをLと一致させる方法は?