Windos和Linux下,【换行】的区别,对于行的结尾的不同处理方式
作者:互联网
windos文本文件拷贝到Linux时候,删除文本中的回车字符方法:
https://mp.weixin.qq.com/s/mJsztHS_1ZRomwsdkUqQlA
常用的 dos2unix
sed
你还可以使用流编辑器 sed 来删除回车符。但是,你必须提供第二个文件名。以下是例子:
$ sed -e “s/^M//” before.txt > after.txt
一件需要注意的重要的事情是,请不要输入你看到的字符。你必须按下 Ctrl+V 后跟 Ctrl+M 来输入 ^M。s 是替换命令。斜杠将我们要查找的文本(Ctrl + M)和要替换的文本(这里为空)分开。
vi
你甚至可以使用 vi 删除回车符(Ctrl+M),但这里假设你没有打开数百个文件,或许也在做一些其他的修改。你可以键入 : 进入命令行,然后输入下面的字符串。与 sed 一样,命令中 ^M需要通过 Ctrl+V 输入 ^,然后 Ctrl+M 插入 M。%s 是替换操作,斜杠再次将我们要删除的字符和我们想要替换它的文本(空)分开。 g(全局)意味在所有行上执行。
:%s/^M//g
Unix系统里,每行结尾只有”<换行>”,即”\n”;Windows系统里面,每行结尾是”<回车><换行>”,即”\r\n”;Mac系统里,每行结尾是”<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号(该符号需要同时按下Ctrl+V 和 Ctrl+M 输入 )。
在windos和Linux下,对于行的结尾的处理方式是不同的,windos 文本工具中,敲 【 ENTER 键】包含了 回车(CR,即 “\r”) 和 换行(NL,即 “\n”)两个特殊字符 ,而Linux下 只包含了 回车(CR,即 “\r” ),因此,windos下文本中的的 “\r” 拷贝到 Linux下后打开会看到 ^M符号,即是"\r" 相当于 ^M符号 。所以在vi 编辑器下:
可以用以下命令删除DOS文件中的回车符“^M”:
:%s/\r//g
可以用以下命令转换DOS回车符“^M”为真正的换行符:
:%s/\r/\r/g
可以用以下命令删除换行符:
:%s/\n//g
标签:结尾,Ctrl,换行,windos,sed,Windos,Linux,文本 来源: https://blog.csdn.net/yangyi_CSDN/article/details/112995375