在Unix中从文件中删除所有回车\r的最简单方法是什么?


当前回答

这又是一个解决方案……因为总还有一个问题:

perl -i -pe 's/\r//' filename

它很好,因为它可以在我使用过的所有unix/linux版本中工作。

其他回答

有一个名为dos2unix的实用程序存在于许多系统上,并且可以在大多数系统上轻松安装。

我用的是python,这是我的代码;

end1='/home/.../file1.txt'
end2='/home/.../file2.txt'
with open(end1, "rb") as inf:
     with open(end2, "w") as fixed:
        for line in inf:
            line = line.replace("\n", "")
            line = line.replace("\r", "")
            fixed.write(line)

Sed -i s/\r// <文件名>或someesuch;请参阅man sed或web上有关sed使用的丰富信息。

有一点需要指出的是上面“马车返回”的确切含义;如果您真正指的是单个控制字符“回车”,那么上面的模式是正确的。如果您指的是更一般的CRLF(回车和换行,这是Windows下换行的实现方式),那么您可能希望替换\r\n。Linux/Unix中的换行符(换行符)是\n。

Cat input.csv | sed 's/\r/\n/g' > output.csv

为我工作

有人推荐dos2unix,我也强烈推荐。我只是提供更多的细节。

如果已安装,请跳转到下一步。如果还没有安装,我建议通过yum安装:

yum install dos2unix

然后你可以这样使用它:

dos2unix fileIWantToRemoveWindowsReturnsFrom.txt