Как заменить вывод текущей скорости консольной speedtest или подобной на построчный (LF — CRLF)?

имеется speedtest (
https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-i386.tgz
),
который поставляется для Linux CLI на https://www.speedtest.net/apps/cli .

Эта программа выводит мгновенное значение скорости на протяжении всего времени измерения.
Выводит значение на одной строке. Похоже, что для вывода она переводит каретку и пишет
с начала строки затирая предыдущие значения (догадка).

Мне необходимо обрабатывать в течение всего времени измерения
все значения скорости, а не только финальное значение. Замена LF->CRLF в выводе stdout не помогает:
# /opt/speedtest/speedtest | sed 's/\r/\r\n/'

Если записать вывод данных в файл
# /opt/speedtest/speedtest | tee spdt.log

то в файле не видно промежуточных значений значений.
Возможно я не прав в таком походе.

Как можно:
1. записать полный вывод этой консольной программы
2. самое главное для обработки скриптом как получить промежуточно выводимые значения
скорости одно на одной строке (построчный вывод).

Кроме speedtest может выступать и другая консольная программа, выводящая
похожим образом.
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Если записать вывод данных в файл
# /opt/speedtest/speedtest | tee spdt.log
то в файле не видно промежуточных значений значений.

Дело в том, что консольная программа может определить, направлен ли её вывод в терминал или в файл, и вести себя по разному, в зависимости от этого. Понаблюдать, что и как именно программа выводит можно запустив её под strace, например так:
strace -f -e ioctl,write -o log <program command line>

Соответственно, поймать что такая программа выводит в процессе можно только предоставив ей в качестве вывода эмуляцию терминала.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы