问题:
Windows下的TXT文件上传到Linux系统上,用cut,grep.sed,awk等文本处理工具处理过后再次传到Windows电脑上,发现内容都连到一块了,百度了一下才知道换行符被删除了,
so,问题来了,怎么处理就不会把换行符删除?
在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