我的 Red Hat 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,则会在不同的行中显示。
我猜记事本无法理解换行符 []
有没有什么方法可以用不同的方式编写它以便它可以在记事本中正确显示。
答案1
除了记事本,还可以尝试记事本++它可以正确处理 unix 换行符,而无需修改文件。当您编辑配置文件时,它还会保留换行符样式
答案2
如果您只想查看数据,那么 WordPad(通常随 Windows 提供)之类的程序是一种快速解决方法,它会将 LF 读为新行。记事本之类的程序则不会,对于这些程序,您需要 LF 和 CR。
一个更好的选择是得到一个可以做得更好的 Windows 文本编辑器,例如记事本++
答案3
Unix 和 Windows 中的文本文件之间的区别在于,前者使用换行符 ( \n
) 来终止一行,而后者同时使用回车符和换行符 ( \r\n
)。您在记事本中看到这些方块是因为编辑器注意到了换行符而前面没有回车符,并且不知道如何正确显示它。
如果您首先通过 Vim 和记事本访问日志文件,则应考虑修改脚本以输出 Windows 样式的文本文件,通过手动指定要使用的行分隔符:
echo -ne "$ddate;$time;$cpu\r\n"
答案4
检查您的 FTP 客户端。应该有一个选项可以将文件传输为文本文件(而非二进制文件)。
在此模式下,它会自动转换换行符(顺便说一句:如果使用不当,此选项也会弄乱二进制文件,例如图像)
或者unix2dos
使用 Linux 系统上的命令将文件转换为 DOS/Windows 换行格式。