質問: 前のコマンドの出力を引数として次のコマンドに渡します stdout(command1 -p=aaa -v=bbb -i=4)にデータを出力するコマンドがあります。出力行には次の値を含めることができます。rate (10%) - name: value - 10kbps その「レート」を保存するために、その出力をgrepしたいと思います(ここではパイプが役立つと思います)。そして最後に、そのレートを2番目のコマンドのパラメーターの値にしたいとします(command2 -t=${rate}としましょう)。それは私の側でトリッキーに見えます。パイプ、grep、sedなどの使い方をもっと知りたいのですが。私はそのような多くの組み合わせを試しましたが、私はこれらについて混乱しています:$ command1 -p=aaa -v=bbb -i=4 | grep "rate" 2>&1 command2 -t="rate was "${rate}
回答: 私はこれを使う傾向があります:command1 | xargs -i{} command2 {} command1の出力を、置換(中括弧)を使用してxargsからcommand2に渡します。 command1がfindの場合、必ず-print0を使用し、xargsに-0を追加してnullで終了する文字列にすると、xargsがcommand2を呼び出します見つかったものごとに。あなたの場合(そして@janosからsedラインを取る):command1 -p=aaa -v=bbb -i=4 | sed -ne 's/^rate..\([0-9]*\)%.*/\1/p' | xargs -i{} command2 -t="rate was {}"