Teknik olmayan bir kitle için bir sunum hazırlıyorum. Birkaç önemli olan sürekli bir değer akışı çıktı bash içinde çalışan bir program var. İzleyicilerin sıklıkları hakkında bir fikir edinebilmeleri için önemli sonuçları gösterildikçe vurgulamak istiyorum. Sorun şu ki sed
, çalışan bir akışta işlem yapamıyorum . Sonuçları bir dosyaya koyarsam iyi çalışır:
cat output.txt | sed "s/some text/some text bolded/"
Ama aynı şeyi çalışan çıktı üzerinde denerseniz, şöyle:
command | sed "s/some text/some text bolded/"
sed
hiç birşey yapmıyor. Düşüncesi olan var mı?
Lambert, işaret edecek kadar yardımcı olduğu için sed
, hiçbir şey yapmadığını söylemem belirsizdi. Olan şey, programın , pipetlenmiş olsa bile, normalde olduğu gibi stdout
(yazmadığından eminim stderr
) çıktısıdır sed
.
Sorun, komutun daha sonra stdout'a çıktı veren ikinci bir program çağırması gibi görünüyor. İlk program tarafından basılan birkaç satır vardır; bunları düzenleyebilirim. Sonra ikinci program tarafından basılan bir değer akışı vardır; bunları düzenleyemiyorum.
Perl ve awk yöntemleri de çalışmaz.
command|egrep 'some text|$'
g
"global" ikame eklemeniz gerekir , aksi takdirde bir satırdaki yalnızca ilk kez yer değiştirilir:sed "s/old/new/g"
stdbuf -o0 command | sed "s/some text/some text bolded/"
iş?