私は技術に詳しくない聴衆のためにプレゼンテーションをまとめています。値の連続ストリームを出力するbashで実行しているプログラムがありますが、そのうちのいくつかは重要です。重要な結果が表示されるときに強調表示して、聴衆がその頻度を把握できるようにします。問題はsed
、実行中のストリームを操作できないことです。次のように結果をファイルに入れるとうまくいきます:
cat output.txt | sed "s/some text/some text bolded/"
しかし、次のように実行中の出力で同じことをしようとすると:
command | sed "s/some text/some text bolded/"
sed
何もしません。何かご意見は?
ランバートは指摘するのに十分役に立ちましたので、私の言ったことsed
は何も曖昧ではありませんでした。何が起こっstdout
ているのかstderr
は、たとえそれがパイプスルーされたとしても、プログラムが通常どおりに出力することです(書き込みを行っていないことはかなり確信しています)sed
。
問題は、コマンドが2番目のプログラムを呼び出し、それが標準出力に出力されることであるようです。最初のプログラムで印刷された数行があります。これらは編集できます。次に、2番目のプログラムによって出力される値のストリームがあります。これらは編集できません。
Perlおよびawkメソッドも機能しません。
command|egrep 'some text|$'
g
:置換されるラインで、そうでない場合のみ最初の発生を得た「グローバルな」置換をsed "s/old/new/g"
stdbuf -o0 command | sed "s/some text/some text bolded/"
作品?