問題タブ [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.
search - おそらく異なる行に複数の単語を含むファイルを見つけるためにripgrep?
次のようなファイルがある場合:
たとえば、foo と bar を含むファイルを検索する ripgrep (または類似の) コマンドはありますか? たとえば、file1.txt は表示されますが、他の 2 つのファイルは表示されませんか? (foo と bar が同じ行にない場合があることに注意してください。)
そして 2 番目の質問は、さらに凝ったものにするために、いくつかの構文を使用して foo でファイルをカウントし、それらに bar も含まれている場合はそれらを除外することはできますか? たとえば、file2.txt のみを表示しますか?
ありがとう!
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
一致を見つけるために使用するように言っています。したがって、それを私のユースケースに翻訳すると、. これは機能します...ただし、それを含む行を除外する場合のみ、他のシナリオは処理されません。vec
grad(
(?<!--)foobar
--foobar
最悪の場合、ripgrep の結果を別のフィルターにパイプして、一致する行を除外する--.*foobar
こともできますが、オールインワンのソリューションを見つけたいと思っています。