在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