検索から検索

検索から検索

私はgrepコマンドライン検索を使用することに慣れており、他の検索結果を使用して正常に検索する方法を知りたいです。

私の試みは次のとおりです。結果から「ツール」を探しています。

grep tool | grep -rl embed=

これにより一部の結果が返され、コンソールが中断されます。シンプルでエレガントなソリューションはありますか?

ベストアンサー1

管路左から右に走ります。より正確には、プロセス並列に実行されますが、データ左から右への流れ:左コマンドの出力が右コマンドの入力になります。

ここで左のコマンドはですgrep tool。単一の引数をに渡すので、grep標準入力を検索します。標準入力をリダイレクトしていないので、grep端末から読み込んでいます。端末はユーザーが入力するのを待っています。

ファイル内で検索するには、次のようにします。

grep tool path/to/file | …

ディレクトリから再帰的に検索するには、次のようにします。

grep -r tool path/to/directory | …

結果をフィルタリングして、含まれている行のみを一覧表示できますembed=。削除-l-rオプションは、入力が標準入力から来る場合は意味がありません。

grep -r tool path/to/directory | grep 'embed='

toolこれにより、 と を含む行がembed=順序に関係なく表示されます。別の単純なパイプライン方法は、ORパターンを使用して単一の検索を実行することです。これは常に可能ですが、パターンが重なっている場合はパターンが非常に複雑になる可能性があります(ここではそうではありません)。

grep -E -r 'tool.*embed=|embed=.*tool' path/to/directory

リストしたい場合文書含まれているtoolembed=のコマンド構造が必要です。最初のコマンドgrepはファイル名(-l)をリストし、2番目のコマンドはこれらのファイル名を次のように受け取ります。議論、入力として使用されません。標準入力をコマンドライン引数に変換xargsコマンドは次のとおりです。

grep -lZ -r tool path/to/directory | xargs -0 grep -l 'embed='

おすすめ記事