我在我的红帽子Linux的盒子上有一小段代码
echo $ ddate“;”$ time“;”$ cpu >> / home / logfile
输出是在vi中
2010-04-10 12:23:32;01 2010-04-10 12:23:32;01 2010-04-10 12:23:32;01
但是当我ftp到一个Windows机器,并在记事本中打开它
我懂了
2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01
它显示我在一行,如果我复制这个excel显示我在不同的行。
我的猜测是记事本不能理解换行[]
有没有办法,我可以写它不同,以便它可以正确显示在记事本中。
而不是记事本,尝试notepad ++ ,它可以正确处理unix linebreaks而不需要修改文件。 当你编辑configuration文件时,它也将保持linebreak样式
如果您只想查看数据,那么写字板(通常是Windows附带的)就是一个快速的解决方法,并将LF作为新行读取。 像记事本这样的事情,对于那些你需要LF和CR的人来说。
一个更好的select是得到一个Windows的文本编辑器,可以做得像记事本++更好
Unix和Windows中的文本文件的区别在于,前者使用换行字符( \n )来终止一行,而后者使用回车和换行( \r\n )。 您在记事本中看到这些方块,因为编辑器发现换行没有前面的回车符,也不知道如何正确显示它。
如果您首先通过Vim和记事本访问日志文件,则应考虑通过手动指定要使用的行分隔符来修改脚本以输出Windows样式的文本文件:
echo -ne“$ ddate; $ time; $ cpu \ r \ n”
在你的Linux机器上,在你ftp文件之前运行它:
unix2dos /home/logfile
如果你的Windows机器上有Cygwin或类似的工具,那么你可以在文件传输之后在那里运行unix2dos 。
顺便说一句,这是你的脚本的简化版本。 没有理由单独引用分号。
echo "$ddate;$time;$cpu" >> /home/logfile
另外,这不是文件最好的地方。 通常,该目录中不应有任何文件。 它应该去的地方取决于几个因素。 但是,我意识到,这可能只是您的问题的一个例子。
检查你的FTP客户端。 应该有一个选项将文件作为文本文件(不是二进制文件)传输。
在这种模式下,它会自动转换换行符(顺便说一句:这个选项也可以搞乱二进制文件,如图像,当你错误地使用它)
或者你的Linux unix2dos上的unix2dos命令将文件转换为DOS / Windows linebreak格式。