Linux 中删除文本中的回车字符的方法
当回车字符(Ctrl+M)让你紧张时,别担心。有几种简单的方法消除它们。
“回车”字符可以往回追溯很长一段时间——早在打字机上就有一个机械装置或杠杆将承载纸滚筒的机架移到右边,以便可以重新在左侧输入字母。他们在Windows上的文本文件上保留了它,但从未在Linux系统上使用过。当你尝试在Linux上处理在Windows上创建的文件时,这种不兼容性有时会导致问题,但这是一个非常容易解决的问题。
如果你使用od(八进制转储)命令查看文件,那么回车(也用Ctrl+M代表)字符将显示为八进制的15。字符CRLF通常用于表示Windows文本文件中的一行结束的回车符和换行符序列。那些注意看八进制转储的会看到\r\n。相比之下,Linux文本仅以换行符结束。
这有一个od输出的示例,高亮显示了行中的CRLF字符,以及它的八进制。
$od-bctestfile.txt 0000000124150151163040151163040141040164145163164040146 Thisisatestf 0000020151154145040146162157155040127151156144157167163 ilefromWindows 0000040056015012111164047163040144151146146145162145156<== .\r\nIt'sdifferen<== 0000060164040164150141156040141040125156151170040164145 tthanaUnixte 0000100170164040146151154145015012167157165154144040142<== xtfile\r\nwouldb<==
虽然这些字符不是大问题,但是当你想要以某种方式解析文本,并且不希望就它们是否存在进行编码时,这有时候会产生干扰。
3种从文本中删除回车符的方法
幸运的是,有几种方法可以轻松删除回车符。这有三个选择:
dos2unix
你可能会在安装时遇到麻烦,但dos2unix可能是将Windows文本转换为Unix/Linux文本的最简单方法。一个命令带上一个参数就行了。不需要第二个文件名。该文件会被直接更改。
$dos2unixtestfile.txt dos2unix: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命令可能是最容易记住的,也是从文本中删除回车的最可靠的方法。其他选择使用起来有点困难,但它们提供相同的基本功能。
via:https://www.networkworld.com/article/3438857/how-to-remove-carriage-returns-from-text-files-on-linux.html
总结
以上所述是小编给大家介绍的Linux中删除文本中的回车字符的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!