当回车符(Ctrl+M)让您感到紧张时,请不要担心。有几种简单的方法可以摆脱它们。“回车”字符由来已久——早在打字机时代就有一种机构或杠杆将承载纸筒的框架向右移动,以便在左侧重新打字。他们将它保存在Windows上的文本文件中,但从未在Linux系统上使用过。当您尝试在Linux上使用在Windows上创建的文件时,这种不兼容性有时会导致问题,但这是一个非常容易解决的问题。如果您使用od(八进制转储)命令查看文件,回车符(也由Ctrl+M表示)字符将显示为八进制的15。字符CRLF通常用于表示Windows文本文件中一行末尾的回车符和换行符序列。关注八进制转储的人会看到\r\n。相反,Linux文本仅以换行符结尾。这是od输出的示例,突出显示行中的CRLF字符及其八进制表示形式。$od-BCtestfile.txt0000000124150151163040151163040141040164164145163164040146THISISISISISISISATF0000020151154154154145145146146146146142157155040127151151151156156156157163163163163111631111631ifsORo164047163040144151146146145162145156<==。\R\n它的dIfFeren<==0000060164164150141156040125156151170164145tHan04014615115414501501216715716512i==04l\14r\nwouldb<==虽然这些字符不是什么大问题,但是当你想以某种方式解析文本,并且不想知道它们是否存在时,这有时会干扰编码。从文本中删除回车符的3种方法幸运的是,有几种方法可以轻松删除回车符。这里有三个选项:dos2unix您可能在安装时遇到问题,但是dos2unix可能是将Windows文本转换为Unix/Linux文本的最简单方法。一个带参数的命令就行了。不需要第二个文件名。直接改文件。$dos2unixtestfile.txtdos2unix:convertingfiletestfile.txttoUnixformat...您应该看到文件长度减少,具体取决于它包含的行数。一个100行的文件可能会缩减99个字符,因为只有最后一行不以CRLF字符结尾。之前:-rw-rw-r--1shsshs121Sep1419:11testfile.txt之后:-rw-rw-r--1shsshs118Sep1419:12testfile.txt如果你需要转换一个很多文件,而不必一次修复一个。相反,将它们全部放在一个目录中并运行如下命令:$find。-typef-execdos2unix{}\;在此命令中,我们使用find查找常规文件,然后运行??dos2unix命令一次转换一个文件。命令中的{}将替换为文件名。运行时,您应该在包含该文件的目录中。此命令可能会损坏其他类型的文件,例如文本文件以外的上下文中包含八进制15的文件(例如,图像文件中的字节)。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总结dos2unix命令可能是最容易记住和最可靠的从文本中删除回车符的方法。其他选项使用起来有点困难,但它们提供相同的基本功能。
