0
が突然、これは(ない出力と、SH、zshの、bashので試行)が失敗した:二度のgrepも失敗したこと尾の出力をパイプで何度もフィルタリングできないのはなぜですか?
echo "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played | sed 's#pl#st#g'
注意、それはかなりだことを示しますどのコマンドを使用するかは関係ありません。
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played | grep played
グレップのみの作品は:、journalctl --follow
で
# echo -e "foo\nplayed\nbar" > /tmp/t && cat /tmp/t | grep played | sed 's#pl#st#g'
stayed
:それは動作しますが、
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | sed 's#pl#st#g'`
foo
stayed
bar
猫代わり尾の付:
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played
played
は一人で作品をセッドそれ tail
のように失敗します。
なぜ2回パイプすることができないのですか?
ありがとう、エド。この記事では、不要なコマンドが排除されるかどうか最初に確認することを提案しています。私の特別なケースでは、 '--silent'と明示的に置換された行(' p')を追加することができました。たとえば、sed - silentの#pl#st#p "を指定します。 (そうでなければ、言及されていない*バッファされていない*変形が行く方法でした) – user569825
私は '--silent'について聞いたことがなく、より一般的な' -n'と同じことをするようです。これは、 '再生された'考え以外の文脈で 'pl'を含む行を出力します。シンタックスをチェックしてsedを使って '/ played/{s/pl/st/gp}'のようなことをすることができます。 awkでは 'awk '/ played/{gsub(/ pl /、" st "); print}' 'となります。 –
幸いにも私の使用例は、私が与えた例より複雑です。したがって、置換を受け取るすべての行は実際には出力に必要です。それでも、将来のケースでは、sedの正しい構文が不思議に思うでしょう。 (Btw '--silent' *は*' -n'です。スクリプト化と文書化の際に、複雑なスイッチを使用する方が好きです。) – user569825