李志敏 发表于 2024-9-11 15:03:31

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

在不同的服务器系统中处理文本编辑器中的换行符的方式也不相同。例如,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字符的方法。
页: [1]
查看完整版本: 如何在Linux中删除文件中的^M字符