如何使用sed命令将换行符(“\n”)替换为空格(“”)?

我尝试过:

sed 's#\n# #g' file
sed 's#^$# #g' file

如何修复?


当前回答

如果您不幸不得不处理Windows行结尾,则需要删除\r和\n:

tr '\r\n' ' ' < $input > $output

其他回答

要删除空行,请执行以下操作:

sed -n "s/^$//;t;p;"
cat file | xargs

为了完整起见

试试看:

echo "a,b"|sed 's/,/\r\n/'

另一种GNU sed方法,几乎与Zsolt Botykai的答案相同,但这使用了sed不太常用的y(音译)命令,这节省了一个字节的代码(后面的g):

sed ':a;N;$!ba;y/\n/ /'

人们可能希望y的运行速度比s快(也许以tr的速度,快20倍),但在GNU sed v4.2.2中,y比s慢4%左右。


更便携的BSD sed版本:

sed -e ':a' -e 'N;$!ba' -e 'y/\n/ /'

可以使用xargs:

seq 10 | xargs

or

seq 10 | xargs echo -n