从文件输出中删除其他换行符

时间:2011-08-30 14:27:41

标签: ruby file

我有一个脚本,可以将数据从串口转储到终端和硬盘。到终端的输出看起来很好,但是文件在每次写入之后写入^ 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 个答案:

答案 0 :(得分:1)

尝试使用read打开写入ruby文件的数据。我怀疑你遇到的问题是回车字符有时会在将文件从Windows传输到linux或通过某些邮件客户端下载文件时导致问题。

答案 1 :(得分:0)

我不知道您的串行数据是什么样的,但您可以在写入之前始终对数据变量进行选择。试一试,看看它是怎么回事。

编辑:如果您要删除^ M,也许您可​​以尝试sp.read.tr("\r","")