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


当前回答

使用sed

sed $'s/\r//' infile > outfile

在Git Bash for Windows上使用sed

sed '' infile > outfile

第一个版本使用ANSI-C引用,如果命令从脚本运行,可能需要转义\。第二个版本利用了这样一个事实,即sed通过删除\r和\n字符逐行读取输入文件。但是,当向输出文件写入行时,它只追加一个\n字符。通过简单地修改IFS,可以设计出更通用的跨平台解决方案

IFS=$'\r\n' # or IFS+=$'\r' if the lines do not contain whitespace
printf "%s\n" $(cat infile) > outfile
IFS=$' \t\n' # not necessary if IFS+=$'\r' is used

警告:此解决方案执行文件名扩展(*,?,[…]如果设置了extglob,则更多)。只有在确定文件不包含特殊字符或需要展开时才使用它。 警告:没有一个解决方案可以处理输入文件中的\。

其他回答

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

为我工作

古老的学校:

tr -d '\r' < filewithcarriagereturns > filewithoutcarriagereturns
tr -d '\r' < infile > outfile

看到tr (1)

如果你正在运行一个X环境,并且有一个合适的编辑器(visual studio代码),那么我会遵循以下建议:

Visual Studio代码:如何显示行结束

只要转到屏幕的右下角,visual studio代码就会显示文件编码和文件后面的行结束约定,只需简单地单击就可以切换。

只要在linux环境下使用可视化代码作为notepad++的替代品,你就可以开始了。

你可以简单地这样做:

$ echo $(cat input) > output