如何删除回车从文本文件在LinuxgydF4y2Ba

当回车(也称为Ctrl+M)让你心烦时,不要烦躁。有几种简单的方法可以让他们走人。gydF4y2Ba

马车返回的历史可以追溯到很久以前——追溯到打字机的时候,一个机械装置或操纵杆使马车向右转动,把一张纸拉到左边,突然字母又被打了出来。在Windows上,它们一直存在于文本文件中,但从未在Linux系统上使用过。当您试图在Linux上处理在Windows上创建的文件时,这种不兼容性有时会导致问题,但这是一个很容易解决的问题。gydF4y2Ba

回车,也称为gydF4y2BaCtrl + MgydF4y2Ba,字符将显示为八进制15,如果您在文件中使用gydF4y2BaodgydF4y2Ba八进制转储)命令。的字符gydF4y2BaCRLFgydF4y2Ba通常用于表示Windows文本文件中结束行的回车和换行序列。那些喜欢凝视八进制dumps的人会发现gydF4y2Ba\ r \ ngydF4y2Ba.相比之下,Linux文本文件以换行结束。gydF4y2Ba

这是一个样本gydF4y2BaodgydF4y2Ba的行输出gydF4y2BaCRLFgydF4y2Ba八进制和字符形式的字符都被高亮显示。gydF4y2Ba

美元od bc testfile.txt 163 124 150 151 0000000 040 151 163 040 141 040 164 145 163 164 040 146 T h is i s T e s T f 040 151 154 145 0000020 146 162 157 155 040 127 151 156 144 157 167 163 i l e f r o W i n d o W s 0000040 056gydF4y2Ba015 012gydF4y2Ba111 164 047 163 040 144 151 146 146 145 162 145 156 <==gydF4y2Ba\ r \ ngydF4y2Ban <== 0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145 t t h a n n x t e 0000100 170 164 040 146 151 154 145gydF4y2Ba015 012gydF4y2Ba1 . x t I l e <= x t f I l egydF4y2Ba\ r \ ngydF4y2BaW o u l d b <==gydF4y2Ba

虽然这些字符并不代表一个大问题,但当您希望以某种方式解析文本文件,并不想围绕它们的存在或不存在编写代码时,它们有时会造成干扰。gydF4y2Ba

从文本文件中删除回车字符的3种方法gydF4y2Ba

幸运的是,有几种方法可以轻松地删除回车符。这里有三个选择:gydF4y2Ba

dos2unixgydF4y2Ba

你可能需要安装它的麻烦,但是gydF4y2Bados2unixgydF4y2Ba可能是将Windows文本文件转换为Unix/Linux文本文件的最简单的方法。一个命令和一个参数,就完成了。不需要第二个文件名。文件将被就地更改。gydF4y2Ba

$ dos2unix:将testfile.txt文件转换为Unix格式…gydF4y2Ba

您应该会看到文件长度减少,这取决于它包含的行数。一个包含100行的文件可能会减少99个字符,因为只有最后一行不会以gydF4y2BaCRLFgydF4y2Ba字符。gydF4y2Ba

之前:gydF4y2Ba

-rw-rw-r——1 shs shs 121 9月14日19:11 testfile.txtgydF4y2Ba

后:gydF4y2Ba

-rw-rw-r——1 shs shs 118 9月14日19:12 testfile.txtgydF4y2Ba

如果你需要转换大量的文件,不要一次修复一个。相反,将它们单独放在一个目录中,并运行如下命令:gydF4y2Ba

发现美元。-type f -exec dos2unix {} \;gydF4y2Ba

在这个命令中,我们使用find来定位常规文件,然后运行gydF4y2Bados2unixgydF4y2Ba命令一次转换一个。命令中的{}将被文件名替换。当您运行它时,您应该与文件一起位于目录中。这个命令可能会损坏其他类型的文件,例如那些在文本文件之外的某些上下文中包含八进制15字符的文件(例如,图像文件中的字节)。gydF4y2Ba

sedgydF4y2Ba

你也可以用gydF4y2BasedgydF4y2Ba流编辑器删除回车。但是,必须提供第二个文件名。这里有一个例子:gydF4y2Ba

$ sed -e " s/^M// " before.txt > after.txt .gydF4y2Ba

需要注意的一件重要的事情是,不要键入命令显示的内容。您必须输入gydF4y2BaM ^gydF4y2Ba通过输入gydF4y2BaCtrl + VgydF4y2Ba紧随其后的是gydF4y2BaCtrl + MgydF4y2Ba.“s”是替代命令。斜杠分隔了我们正在寻找的文本(Ctrl+M)和我们要替换它的文本(在本例中没有)。gydF4y2Ba

6gydF4y2Ba

您甚至可以删除回车(gydF4y2BaCtrl + MgydF4y2Ba)字符gydF4y2Ba6gydF4y2Ba,尽管这假设您没有遍历数百个文件,并且可能还会进行一些其他更改。你会输入"gydF4y2Ba:gydF4y2Ba,然后输入如下所示的字符串。与gydF4y2BasedgydF4y2Ba,gydF4y2BaM ^gydF4y2Ba这个命令的一部分需要输入gydF4y2BaCtrl + VgydF4y2Ba得到gydF4y2Ba^gydF4y2Ba然后gydF4y2BaCtrl + MgydF4y2Ba插入的gydF4y2Ba米gydF4y2Ba.的gydF4y2Ba% sgydF4y2Ba是一个替换操作,斜杠再次分隔我们想要删除的字符和我们想要替换的文本(什么也没有)。“gydF4y2BaggydF4y2Ba(global)表示对文件中的每一行执行此操作。gydF4y2Ba

: % s / M ^ / / ggydF4y2Ba

总结gydF4y2Ba

的gydF4y2Bados2unixgydF4y2Ba命令可能是从文本文件中删除回车的最容易记住和最可靠的方法。其他选项使用起来有点棘手,但它们提供了相同的基本功能。gydF4y2Ba

加入网络世界社区有个足球雷竞技appgydF4y2Ba脸谱网gydF4y2Ba和gydF4y2BaLinkedIngydF4y2Ba对自己最关心的话题发表评论。gydF4y2Ba
相关:gydF4y2Ba

版权©2019gydF4y2BaRaybet2

工资调查:gydF4y2Ba结果在gydF4y2Ba