Предположим, что это делается с помощью \r
, которая возвращает курсор в начало текущей строки, не переходя на следующую строку, и что рассматриваемая программа отправляет свой вывод на стандартный вывод, преобразовывая все \r
символов в выводе программы на \n
даст результат, который вам нужен:
yourprogram | tr '\r' '\n' > logfile
См. разницу между
printf "Hello\rworld\n"
и
printf "Hello\rworld\n" | tr '\r' '\n'
Обратите внимание, что без этого перенаправление в файл журнала будет сохранять все выходные данные в файле; вы сможете увидеть это, просмотрев файл с помощью less
, а не cat
.(less
отобразит \r
как ^M
без перезаписи предыдущей строки.)
Если программа пишет напрямую в терминал, это не поможет. В этом случае вам также понадобится программа, способная перехватывать все выходные данные терминала; один примерscript
:
script -c yourprogram logfile
запустит программу и запишет весь ее вывод в logfile
. Вам нужно будет обработать специальные символы в лог-файле, чтобы понять это — less
поможет вам в этом (или любой разумный редактор ).
Who should be contacted to get this idea implemented in some utilities (grep,sed,bash maybe)?
Уже существует некоторый уровень поддержки, например, в системах, использующих библиотеку GNU C и ее определения локалей, «é» распознается как нижний -регистр во французских локалях, а «α» распознается как нижний -. ] случай в греческих локалях. Фарси, как определено в библиотеке GNU C, использует ۰۱۲۳۴۵۶۷۸۹ при некоторых обстоятельствах (, в частности, scanf
и printf
с модификатором I
), но они не являются частью класс «цифры», и я полагаю, что Sharif FarsiWeb знает, что они делают в этом отношении.
Предлагать изменения такого типа в настоящее время немного сложно. Вы всегда можете присоединиться к Austin Group и обсудить это там, либо через список рассылки или средство отслеживания ошибок (, в идеале, начните с того, что некоторое время понаблюдайте за рассылкой. список или чтение архивов ); но POSIX не совсем подходит для того, чтобы пытаться управлять изменениями без каких-либо существующих реализаций. Вы можете попытаться предложить изменение разработчикам различных задействованных инструментов, предположительно начав с определения локали в той или иной библиотеке C, но вы вряд ли продвинетесь слишком далеко без какого-либо неотложного дела (, как правило, требования стандарта. ), поэтому вы попадаете в ситуацию, похожую на -22.
В настоящее время я думаю, что лучше всего придумать обоснованный вариант использования -для важного клиента одного из крупных редакторов операционных систем и таким образом добиться внесения изменений. Тогда редактор возьмет на себя все препирательства сообщества -за вас.
Эта проблема уже решена в POSIX с использованием функций широких -символов. Начните с<wctype.h>
и <wchar.h>
, которые работают с текущим языковым стандартом и<locale.h>
для указания того, какой языковой стандарт может быть.
Кажется, никто не счел необходимым добавлять специальный синтаксис для ссылки на несколько несвязанных локалей в регулярном выражении.