私はこれを共有したかったので、このようなツールがより多く提供されることを願っています。
テキストファイルディレクトリがあります。 2つの(部分的な)単語を含むファイルを検索する必要があります。キーワードはランダムな順序ですが、同じ行にあります。
これまで私はこれを使うことができます:
$ rg -i '\w*keyword1\w*.*\w*keyword2\w*|\w*keyword2\w*.*\w*keyword1\w*' --glob '*.txt' --line-number -l /path/to/search
$ rg -g '*.txt' -l -i 'keyword1.*keyword2|keyword2.*keyword1' /path/to/search
どちらも同じことができます。
同じことができる人がまたいますか?共有してください。正しいファイルを見つけるには、これが頻繁に必要であることがわかりました。
ところで、ファイル名が順序が合わない2つのキーワードであるファイルを検索する方法がわかりません。順序が合わない2つのキーワードを使用してファイル名を検索するには?例:奇妙なファイル名_key1Nkey3Nkey2etc.txt巨大なデータベースから名前を検索すると、「key2」と「key3」で構成されたファイルだけが記憶されますが、順序はわかりません。
答え1
おそらく:
rg -iPlg '*{Key1*Key2,Key2*Key1}*.txt' '^(?=.*keyword1)(?=.*keyword2)' dir
を使用すると、プレビュー演算子を-P
含むPCRE正規表現を取得できます。後^
に任意の数の文字が続くと、行の先頭を一致させることができ、keyword1
その後に任意の数の文字が続く場合に一致させることができますkeyword2
。
-g '*{Key1*Key2,Key2*Key1}*.txt'
csh 中括弧拡張と似た-g '*Key1*Key2*.txt -g '*Key2*Key1*.txt'
略語で、{x,y}
標準シェル glob モードの ripgrep 拡張です。