while read方法(純粋なbash)

while read方法(純粋なbash)

コマンドの実行結果に基づいてテキストストリームをフィルタリングする標準ツールはありますか?

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 {}'

おすすめ記事