«Визуализировать» текстовый файл с возвратом каретки (^ M) и сохранять вывод в файл

У меня есть программа CLI Python, которая работает в течение длительного времени и имеет своего рода прогрессбар, который в основном печатает текст в цикле без «\ n» в конце, на следующей итерации он печатает «\ r», чтобы стереть строку , снова печатает текст и так далее:

while some_condition: print "\rprocessed {} out of {}".format(done_counter, all_counter), 

Он отлично работает в консоли, но когда я перенаправляю stdout в файл, неудивительно, что я получаю много «обработанных … … ^ M». Я хочу получить чистое, «визуализированное» представление файла, как это было бы видно на консоли, при этом все «^ M» обработано. Я не хочу просто удалять эти контрольные символы, а применять их к тексту.

В качестве обходного пути в настоящее время я делаю это: tail -n<NUM_LINES> screenlog_file с <NUM_FILES> достаточно большим, затем выберите «визуализированный» текст с помощью мыши, скопируйте муравьиную пасту в новый файл. Интересно, есть ли более удобный способ сделать это.

РЕДАКТИРОВАТЬ

Благодаря @Archemar, нашел это . Он решает мою текущую проблему, так как я могу изменить код. Однако любые идеи / обходные пути, использующие только linux utils, высоко ценятся.

One Solution collect form web for “«Визуализировать» текстовый файл с возвратом каретки (^ M) и сохранять вывод в файл”

Для такого приложения я запускаю программу, используя script (чтобы не изменять его поведение при перенаправлении вывода в файл), а затем фильтровать полученный файл с помощью скрипта sed. См. Например, мой ответ в Могу ли я программно «записать в» управляющие коды ANSI в файл с помощью unix utils? , обсуждая script2log .

Существуют и другие примеры, например, упомянутые в комментариях. Однако упомянутые выше не затрагивают этот конкретный случай (когда возврат каретки используется для перечеркивания текста), но только удаляет управляющие символы.

  • Проблема удаления / замены специального символа °
  • Как создать каталог с '/' в unix?
  • AltGr не работает в консоли Linux
  • Как правильно удалить странные символы в сценарии bash?
  • Как использовать специальный символ как обычный?
  • Представление / цитирование NUL в командной строке
  • Избегайте необычных символов в именах файлов с помощью `find. -printf "% p \ n" `
  • Почему «echo abc ^ H» просто не печатает `ab`?
  • Клавиша ввода отличается от возврата каретки (CR)
  • tcsh vs zsh. Символы Escape / Control
  • Что делает CTRL + 4 (и CTRL + \) в bash?
  • Linux и Unix - лучшая ОС в мире.