Intereting Posts
Как я могу написать dmesg из командной строки? Параметр yum's –enablerepo разрешает только репо для текущей команды? удалять файлы после вставки в tarball Файл Swf больше не будет воспроизводиться в Iceweasel / chromium Как печатать с удаленного компьютера через SSH на локальный сетевой принтер? Совпадение одного символа в скрипте string bash Не удалось запустить HTTP-сервер Apache – сбой устройства apache2.service Как создать столько переменных, сколько необходимо из сценария оболочки (bash)? Замените строки в файле на основе списка строк и списка соответствующих замещений Проблемы с созданием полного бэкапа в bash HTTPD-сервер не запускается после отключения этих модулей mod_include, mod_info, mod_autoindex и mod_userdir Как я могу сохранить привязки клавиш режима по умолчанию в новом режиме? Как сохранить X-сессию – ArchLinux + Openbox Установить максимальное количество процессов, начатых incrond Ограничение количества процессов по имени

Выход grep cdrecord

Я хотел бы проанализировать вывод cdrecord / wodim с помощью grep. cdrecord -v выводит строки типа

 Track 01: 49 of 75 MB written (fifo 100%) [buf 100%] 10.2x. 

Проблема в том, что cdrecord использует возврат каретки ( CR , \r ), чтобы показать прогресс в той же строке.

Я попытался добавить tr '\r' '\n' к вызову cdrecord, который работает в целом, но вывод не будет отображаться по очереди. Вместо этого анализируются и отображаются большие фрагменты текста:

 cdrecord -v ... | tr '\r' '\n' | grep -i written 

Это связано с cdrecord, tr или grep? Есть ли способ принудительно промыть, чтобы получить выход за строкой?

Любая помощь оценивается.

Выходной сигнал tr буферизуется. Вы можете использовать stdbuf -o0 с tr чтобы сделать его STDOUT небуферизованным:

 cdrecord -v ... | stdbuf -o0 tr '\r' '\n' | grep -i written