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


当前回答

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

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

yum install dos2unix

然后你可以这样使用它:

dos2unix fileIWantToRemoveWindowsReturnsFrom.txt

其他回答

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

为我工作

对于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

如果你使用的操作系统(如OS X)没有dos2unix命令,但有Python解释器(2.5+版本),这个命令相当于dos2unix命令:

python -c "import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))"

它处理命令行上的命名文件以及管道和重定向,就像dos2unix一样。如果您将这一行添加到~/。Bashrc文件(或其他shell的等效配置文件):

alias dos2unix="python -c \"import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))\""

... 下次登录时(或运行source ~/.)您将能够在命令行上以与其他示例相同的方式使用dos2unix名称。

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

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

yum install dos2unix

然后你可以这样使用它:

dos2unix fileIWantToRemoveWindowsReturnsFrom.txt