У меня есть сценарий, который испускает символы «^ M» и хочет заменить их каретой UNIX на лету. В настоящее время я перенаправляю свой вывод и ошибки в файл следующим образом:Заменить «^ M» в перенаправленном stdout/stderr * на лету *
bash my_script.sh > my.log 2>&1
Я знаю, что я могу использовать tr
для выполнения замены, tr '\r' '\n'
, но я только знаю, как сделать это с помощью статических текстовых файлов, а также Мне нравится проверять журнал вывода, прежде чем команда завершит работу. Как сделать замену «на лету» с помощью перенаправления?
Edit: Сценарий должен иметь как стандартный вывод и поток ошибок перенаправляется в журнал.
Что вы имеете в виде с * истинным возвратом каретки *? – hek2mgl
@ hek2mgl Они означают возврат каретки UNIX. UNIX == true :) – slim
Отрицательная терминология: нейтральные платформой _newline_/_line break_/_line final_ - лучшие термины для использования; _carriage return_ конкретно относится к символу ASCII '0xd' (CR,' \ r'), который используется как часть последовательности CRLF ('\ r \ n') в _Windows_. Если ваш ввод имеет последовательности строк CRLF - в отличие от просто CR, что редко встречается в наши дни, тогда вы должны просто _delete_ CR (представлены как '^ M') экземпляры. – mklement0