問題タブ [ripgrep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
539 参照

search - おそらく異なる行に複数の単語を含むファイルを見つけるためにripgrep?

次のようなファイルがある場合:

たとえば、foo と bar を含むファイルを検索する ripgrep (または類似の) コマンドはありますか? たとえば、file1.txt は表示されますが、他の 2 つのファイルは表示されませんか? (foo と bar が同じ行にない場合があることに注意してください。)

そして 2 番目の質問は、さらに凝ったものにするために、いくつかの構文を使用して foo でファイルをカウントし、それらに bar も含まれている場合はそれらを除外することはできますか? たとえば、file2.txt のみを表示しますか?

ありがとう!

0 投票する
1 に答える
56 参照

regex - 文字列の前に別の文字列がある場合は一致を除外します

これはよくある質問のように思われるため、重複として閉じられると感じています...しかし、私の弁護では、GoogleだけでなくSOも検索しましたが、何も見つかりませんでした。

ripgrep を使用して SQL ファイルを検索しようとしていますが、1 行の SQL コメントの一部である一致を除外したいと考えています。

  • /* foobar */複数行のコメントについて心配する必要はありません。単線のみ-- foobar
  • 何もキャプチャする必要はありません
  • SELECT '-- foobar'またはのように、文字列がテキストの一部である可能性について心配する必要はありませんSELECT '--', foobar。私はそれらの誤った除外で大丈夫です。

一致例:

  • マッチ:SELECT foobar
  • マッチ:, foobar
  • 除外:SELECT baz -- foobar
  • 除外:-- foobar
  • 除外:---foobar
  • 除外:-- blah foobar blah

別名、一致を検索しますが、その行の前の任意の時点でfoobar一致が発生した場合は無視します。--

否定的な後読みなどの方法を試しましたが、うまくいかないようです。

この答えは私をそこに連れて行くように思えました: https://stackoverflow.com/a/13873003/3474677

その答えは、の前に付いていない(?<!grad\()vec一致を見つけるために使用するように言っています。したがって、それを私のユースケースに翻訳すると、. これは機能します...ただし、それを含む行を除外する場合のみ、他のシナリオは処理されません。vecgrad((?<!--)foobar--foobar

最悪の場合、ripgrep の結果を別のフィルターにパイプして、一致する行を除外する--.*foobarこともできますが、オールインワンのソリューションを見つけたいと思っています。