关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

如何在Linux中删除文件中的^M字符

发布时间:2023/11/8 16:32:34
香港云服务器

在不同的服务器系统中处理文本编辑器中的换行符的方式也不相同。例如,Windows使用一个特定的回车(CR),在Linux上被描述为^M,然后是换行(LF)来表示换行。另一方面,Linux和UNIX只使用换行来表示行的结束。这在将文件从Windows传输(比如复制和粘贴过来的文件)到Linux时经常会引起问题。这些细节问题很难发现,让人不明白为什么他们的配置文件不能用。

上面截图显示了vi编辑器中的蓝色回车符。

在此Linux快速技巧中,我们将向您展示如何在Linux服务器命令行上识别和删除Window回车。

一、如何识别Linux中的^M字符?

在我们讨论如何删除^M回车之前,重要的是要知道如何找到它们。cat命令和大多数文本编辑器默认不显示^M回车。

正如你所看到的,文件看起来非常正常。现在让我们为cat添加-v选项,允许它显示非打印字符。

现在我们可以看到每行末尾的^M(carat M)回车。如果这是一个配置文件,服务可能会失败启动和/或提示语法错误。

如果你想在vi编辑器中看到^M,你可以像这样传递-b(二进制模式)选项。

vi -b windows-text-file.txt

或者,如果您已经在vi / vim中打开了文件,则可以发出:e ++ff=unix命令。

二、如何删除Linux中的^M(CTRL-M)字符?

有几种方法可以在Linux命令行中删除文件中的^M字符。第一个也是最简单的方法是使用dos2unix命令。dos2unix命令是一个出色的实用程序,可以轻松地将文件转换为Unix格式。这个小工具非常适合这种情况,它可以去除回车,而不需要很多难记的开关。只需像这样把文件名传给这个实用程序。

另一种删除它们的方法是使用vi或vim。就像我们使用 :e ++ff=unix vi 命令查看 ^M 回车一样,我们可以使用 :set ff-unix 命令在文件加载到 vi 编辑器后删除它们。

下面是一个使用sed从文件中删除^M回车的例子。

sed -i "s/\r//g" windows-text-file.txt

一旦你知道Windows格式化的文本文件的存在,处理它们是相当直接的。这篇文章介绍了为什么在Windows上创建的文件中会出现讨厌的^M回车符的基本知识。我们还讨论了几种从Linux或UNIX文件中删除^M字符的方法。