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


当前回答

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

其他回答

对于UNIX……我注意到dos2unix从我的UTF-8文件中删除了Unicode头。在git bash (Windows)下,下面的脚本似乎工作得很好。它使用sed。注意,它只删除行尾的回车符,并保留Unicode标头。

#!/bin/bash

inOutFile="$1"
backupFile="${inOutFile}~"
mv --verbose "$inOutFile" "$backupFile"
sed -e 's/\015$//g' <"$backupFile" >"$inOutFile"

你可以简单地这样做:

$ echo $(cat input) > output

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

事情是这样的,

%0d是回车字符。使它与Unix兼容。我们需要使用下面的命令。

dos2unix fileName。extension fileName.extension

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

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