Удалить дополнительные переводы строк из файла вывода - PullRequest
2 голосов
/ 30 августа 2011

У меня есть сценарий, который выгружает данные из последовательного порта на терминал и жесткий диск. Вывод на терминал выглядит нормально, однако файл записывает ^ M после каждого, что приводит к дополнительному переводу строки для каждой другой строки.

Код обидчика:

# run and dump to file.
loop {
    # output data to log file.
    data = sp.read
    data.delete!("\C-M")   # Removes escape character.
    if( data != "" ) 
        puts data
        File.open($log_file, 'a') { |f| f.write( data ) }
    end
}

Пример вывода: На терминале:

1
2
3

В файле

1

2

3

Редактировать: Решение состоит в том, чтобы запустить data.delete! ("\ C-M") после чтения.

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Попробуйте открыть данные, записанные в файл в ruby, с помощью read.Я подозреваю, что у вас проблема с символами возврата каретки, которые иногда вызывают проблемы при переносе файла из Windows в Linux или при загрузке файлов через некоторые почтовые клиенты.

0 голосов
/ 30 августа 2011

Я не знаю, как выглядят ваши последовательные данные, но вы всегда можете сделать запись переменной данных перед записью. Попробуйте и посмотрите, как это будет.

Изменить: Если вы хотите удалить ^ M, может быть, вы можете попробовать sp.read.tr("\r","")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...