Saya menyusun presentasi untuk audiens non-teknis. Saya memiliki program yang berjalan di bash yang menampilkan aliran nilai yang berkelanjutan, beberapa di antaranya penting. Saya ingin menyoroti hasil penting saat ditampilkan sehingga audiens dapat mengetahui frekuensi mereka. Masalahnya adalah saya tidak bisa sed
beroperasi pada aliran yang sedang berjalan. Ini berfungsi dengan baik jika saya meletakkan hasilnya dalam file, seperti pada:
cat output.txt | sed "s/some text/some text bolded/"
Tetapi jika saya mencoba hal yang sama pada output yang berjalan, seperti ini:
command | sed "s/some text/some text bolded/"
sed
tidak melakukan apa-apa. Adakah pikiran?
Seperti yang ditunjukkan oleh Lambert cukup membantu, perkataan saya bahwa sed
tidak melakukan apa pun tidak jelas. Apa yang terjadi adalah bahwa output program ke stdout
(saya cukup yakin itu tidak menulis ke stderr
) seperti biasanya, bahkan jika disalurkan melalui sed
.
Masalahnya tampaknya bahwa perintah memanggil program kedua, yang kemudian di-output ke stdout. Ada beberapa baris yang dicetak oleh program pertama; ini saya dapat mengedit. Lalu ada aliran nilai yang dicetak oleh program kedua; ini saya tidak bisa mengedit.
Metode Perl dan awk juga tidak berfungsi.
command|egrep 'some text|$'
g
substitusi "global" yang didapat, jika tidak hanya kemunculan pertama pada baris yang akan diganti:sed "s/old/new/g"
stdbuf -o0 command | sed "s/some text/some text bolded/"
bekerja?