Я збираю презентацію для нетехнічної аудиторії. У мене є програма, що працює в 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
.
Проблема, здається, полягає в тому, що команда викликає другу програму, яка потім виводить у stdout. Є кілька рядків, надрукованих першою програмою; це я можу редагувати. Потім є потік значень, надрукований другою програмою; це я не можу редагувати.
Методи Perl і awk також не працюють.
command|egrep 'some text|$'
g
отриману "глобальну" заміну, інакше буде замінено лише перше виникнення у рядку:sed "s/old/new/g"
stdbuf -o0 command | sed "s/some text/some text bolded/"
працює?