写于:2017-01-24		最近一次更新:2017-01-24

Trouble:

win下产生的文本文件因换行符问题导致在linux下对其操作时出错 linux下产生的文本文件因换行符问题导致在win下显示时不换行

Oneway:

转换换行格式即可 sed 's/\r//g' 1win.txt > 1linux.txt win --> linux sed 's/$/&\r/g' 2linux.txt > 2win.txt Linux --> win 要查看文本文件的换行符格式使用file命令 sman@T520:~/Desktop/test$ file 1win.txt 1win.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators sman@T520:~/Desktop/test$ file 2linux.txt 2linux.txt: UTF-8 Unicode (with BOM) text sman@T520:~/Desktop/test$ file 3.txt 3.txt: UTF-8 Unicode (with BOM) text, with CRLF, LF line terminators 文件1win.txt是win下创建的文本,使用CRLF换行格式 文件2linux.txt是Linux下创建的文本,使用LF换行格式 文件3.txt是Linux创建后,又在win下添加了几行内容的文本,存在两种换行格式 注意:Linux --> win时使用 sed -i 's/\n/\r\n/g' 2linux.txt 无效 因为sed是以行为处理单位,换行符充当行分割符的作用, 在读入每行内容时不会读入换行符作为处理内容,所以sed永远无法匹配到\n, 匹配不到\n就不会发生替换操作,所以命令无效 同一个文本文件中最好只存在一种换行符,如果两种换行符同时存在, 在对文本内容进行处理时可能会导致处理结果不正确 cat -A 3.txt 可以详细查看文本内不可打印的符号,包括回车符与换行符 回车符:是一个字符,不是^和M,键盘输入方法是Ctrl + V 和Ctrl + M ,转义符表示为\r 应急技巧:有时急需正常查看文本文件的内容,那么 在文本内容第一行起始处加入<pre>,另保存为UTF-8格式, 然后将文件拓展名改为.html,使用浏览器打开即可正常显示 如果浏览器打开乱码,则在<pre>前加入<meta charset="UTF-8">再打开