如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
cat file | xargs
为了完整起见
其他回答
以前的大多数sed命令示例在我的Unix系统中都不适用,并给出错误消息:
Label too long: {:q;N;s/\n/ /g;t q}
这适用于所有Unix/Linux环境:
line=$(while read line; do echo -n "$line "; done < yoursourcefile.txt)
echo $line |sed 's/ //g' > sortedoutput.txt
第一行将从文件yoursourcefile.txt中删除所有新行,并生成一行。第二个sed命令将删除其中的所有空格。
可以使用xargs:
seq 10 | xargs
or
seq 10 | xargs echo -n
如果您不幸不得不处理Windows行结尾,则需要删除\r和\n:
tr '\r\n' ' ' < $input > $output
谁需要sed?以下是bash方式:
cat test.txt | while read line; do echo -n "$line "; done
另一种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/ /'