コマンドの実行結果に基づいてテキストストリームをフィルタリングする標準ツールはありますか?
grep
たとえば、これを考えてみましょう。正規表現に基づいてテキストストリームをフィルタリングできます。しかし、より一般的な問題は、フィルタを拡張することです。たとえば、特定の基準に一致するすべてのファイルを選択したり(find
利用可能なスキャンが非常に多いがとにかくサブセット)、他のプログラムを使用してデータをフィルタリングしたりできます。次のパイプラインを考えてみましょう。
produce_data | xargs -l bash -c '[ -f $0 ] && ping -c1 -w1 $1 && echo $0 $@'
まったく役に立ちませんが、一般的なアプローチを提供します。 bash onelinerを使用して各行をテストできます。この例では、既存のファイルとアクセス可能なホストで構成される行が必要です。私はこれを行う標準的なツールが欲しいです。
produce_data | super_filter -- bash -c '[ -f $0 ] && ping -c1 -w1 $1'
以下で簡単に使用できますfind
。
find here | super_filter -- test -r
find
私がいつも忘れてしまった特定のフラグの代わりに一般的なツールを使ってファイルをフィルタリングする方法に注意してください。
より現実的な例は、特定のシンボルを含むオブジェクトファイルを見つけることです。これらのツールは役に立ちます。
したがって、super_filter
すべての条件チェッカーはストリーミングモードで実行できます。構文はinxargs
またはに似ていますparallel
。
ベストアンサー1
追加すると、GNUパラレルは機能しませんか&& echo
?
... | parallel 'test -r {} && echo {}'