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

我尝试过:

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

如何修复?


当前回答

针对上述“tr”解决方案,在Windows上(可能使用Gnuwin32版本的tr),建议的解决方案:

tr '\n' ' ' < input

对我不起作用,它可能会出错,或者出于某种原因实际上替换了\n w/“”。

使用tr的另一个功能,“delete”选项-d确实有效:

tr -d '\n' < input

或“\r\n”而不是“\n”

其他回答

我使用了一种混合方法,通过使用tr用制表符替换换行符,然后用我想要的任何内容替换制表符,来绕过换行符的问题。在本例中,“”,因为我试图生成HTML分隔符。

echo -e "a\nb\nc\n" |tr '\n' '\t' | sed 's/\t/ <br> /g'`

sed旨在用于基于行的输入。尽管它可以满足你的需要。


这里更好的选择是使用tr命令,如下所示:

tr '\n' ' ' < input_filename

或完全删除换行符:

tr -d '\n' < input.txt > output.txt

或者如果您有GNU版本(带有长选项)

tr --delete '\n' < input.txt > output.txt
sed -i ':a;N;$!ba;s/\n/,/g' test.txt

tr "\n" <file name>

使用允许查找和替换\n

sed -ie -z 's/Marker\n/# Marker Comment\nMarker\n/g' myfile.txt

标记

成为

#标记注释标记

Perl版本以您预期的方式工作。

perl -i -p -e 's/\n//' file

正如评论中所指出的,值得注意的是,这些编辑是到位的-i.bak将在替换之前为您提供原始文件的备份,以防您的正则表达式没有您想象的那么聪明。