Window系统中用/r/n来表示换行,linux中用/n来表示换行,Windows的文本文件,直接拿到linux中使用可能会会出错,因为多出了“/r”字符,这就是我们看到的^M。那要如何去掉呢,总不能一行行删吧!
解决方法:方法1: 在命令模式下:输薯碧入:%s/^M//g 然后,回车即可替换 注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的
方法2: 使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w 方法3: 使用sed 工具
sed ’s/^M//’ filename > tmp_filename 方法4: 既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
tr -d ‘\r’数租举 方法5:(最常用的方法)
在终端下敲命令:
$ dos2unix filename
直接转换成型滚unix格式,就OK了!~ 更多Linux知识可参考《Linux就该这么学》。
就是一个空格
LINUX未识别的
比仔谈如如你在Windows下写一念启句话,然后后面带个空格,你把它直侍弊接导入到LINUX里面,在这句话的后面就会有一个^M
以后灶槐上传文件用二进制上传就可以唯裂了,这说明用的ASCII文件格式上传的文件,用ftp上传linux文件尽量指辩闭用二进制。
Linux编辑器vim中删除行尾的^M:
有时候,在 Linux 中使用打开曾在 Windows 中编辑过的文件时,会在行尾看到没袜陵 ^M 字符。看起来总是感觉很别扭。
删除方法如下:
在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。
注意: ^M 要用 Ctrl + v, Ctrl + m 来输入, 用键盘直接敲^和M是不行的! 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配枯戚到的内容都要置换--全局替换,否则只替换每行中匹配到的第一个。
又脚本删除方法:
cat file | col -b > file.1 // 这个可以去掉,但是生成文件里汉字变乱码
sed -e 's/.$//g' file // 正确
sed ‘s/^M//' file // 正确,但是 ^M = Ctrl + v, Ctrl + m
附录:^M 另一个会好腔出现的情况是文件在 windows 和 Linux 系统间通过 Ftp 传送。这是建议方法是:强行设定 ftp 方式为 ascii 方式就可以了啊! 当然也可以通过软件 dos2unix 搞定。更多Linux知识可参考《Linux就该这么学》。
这和Linux与Windows断行格式有关。DOS (Windows 系统)使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 底下,激册则是仅有 LF ($) 这个断行符号。
在 Linux 底下打开Windows的档案时,由于 DOS 的断行符号是 CRLF ,就会多了一个 ^M 的符号出来。
在这样的情况下绝铅坦,如果是一个 shell script 的程序档案,将可能造成“程序并桐无法执行”的状态~ 因为他会误判程序所下达的指令内容。
可以使用dos2unix来转换:
dos2unix file