Windows和Linux下文件格式的问题

    技术2022-05-12  30

    2011-05-18 wcdj

     

    问题: 在Windows下编写的文件,当在Linux下用 cat -v filename 命令查看时,可以发现每行的结尾都有^M字符。当我们在Linux下写的应用程序在读取含有^M字符的文件时,会出现意想不到的错误。所以需要将Windows下文件的格式转换为Linux下的文件格式。 仍存在的疑惑: 在我的vi中打开含有^M的文件,设置 :set list 只能看到以“$”表示的换行符,并没有看到有^M字符。使用 :%/^M$//g 进行替换也没有找到。

     

    注意: To get the ^M do not actually enter it as is. Insert it by typing the CTRL-V CTRL-M sequence instead.

    去除^M的方法: 去除^M的方法很多,总结一些如下: 方法1: 在vi中转换文件的格式,直接输入以下命令,然后 :wq。 :set fileformat=unix :set fileformat=dos 方法2: 使用col命令 cat file_win | col -b > file_linux cat file_win | col -b | tee file_linux 方法3: 使用tr命令 cat file_win | tr -d '/r' > file_linux cat file_win | tr -d '/r' | tee file_linux 参考: Removing CRLF Using Vi http://phaq.phunsites.net/2006/07/25/removing-crlf-using-vi/ 为什么我的vi有时不显示windows下的回车和换行符号^M http://bbs.chinaunix.net/viewthread.php?tid=757832 vi下显示回车换行符等特殊符号 http://blog.163.com/mageng11@126/blog/static/14080837420110211753226/ Linux: col过滤控制字符/seq序列生成 http://cicikasa.blog.163.com/blog/static/13757535520102495718203/


    最新回复(0)