LINUX.ORG.RU

Сообщения ignoramus8

 

Замещение LF -> CRLF в терминале

Всем привет! Есть некоторая программа1 на си, которая обрабатывает команды от оператора в терминале линукса, отправляет их программе2 на эрланге и получает ответ в виде строки «event1\event2\nevent3\n...eventN». Далее эта строка записывается в stdout:

fwrite(ERL_BIN_PTR(data), 1, size, stdout);

И оператор должен увидеть красивый построчный вывод команды в терминале. И всё бы хорошо, но почему-то периодически пара строк перетирается последующими строками. Всего в выводе больше 200 строк, но перетираются только две конкретные. Насколько я себе это представляю, терминал должен заменять LF-символ (\n) на CRLF (это описано на вики http://en.wikipedia.org/wiki/Line_discipline). Однако, для упомянутых выше строк вставляется только CR, благодаря чему каретка не переводится вниз, и следующая строка печатается поверх текущей. Причем, если перенаправить вывод в файл, или грепать эту строку, то всё отображается полностью. Кто-то сталкивался с подобным? Есть еще вариант посмотреть побайтово, что программа1 получает от эрланга. Возможно, я просто не вижу в редакторе некоторые специальные символы, которые ломают вывод, но более вероятным кажется, что проблема в терминале.

 

ignoramus8
()

Обрезать файл после ключевого слова при помощи sed

Всем привет,

Появилась задача обрезать лог программы после первого встреченного слова END. Лог в бинарном формате, END вставляется обычным текстом, может встречаться несколько раз. Для обработки лога уже есть скрипт, использующий sed, поэтому желательно использовать его же. Подскажите пожалуйста, как это реализовать.

 

ignoramus8
()

RSS подписка на новые темы