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
()