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

我尝试过:

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

如何修复?


当前回答

为了使用awk将所有换行符替换为空格,而不将整个文件读入内存:

awk '{printf "%s ", $0}' inputfile

如果需要最后一行换行符:

awk '{printf "%s ", $0} END {printf "\n"}' inputfile

可以使用空格以外的字符:

awk '{printf "%s|", $0} END {printf "\n"}' inputfile

其他回答

这真的很简单。。。当我找到解决办法时,我真的很生气。又少了一个反斜杠。这就是:

sed -i "s/\\\\\n//g" filename

还有一种选择:

tr-s“[:space:]”“”<filename>filename2&&mv filename2文件名

其中tr-s表示:

-s、 --挤压重复替换重复字符的每个序列其列在最后指定的SET中,只出现一次该字符

这将使用单个空格替换文件中的所有空格序列,将结果写入新文件,然后将新文件重命名为原始名称。

谁需要sed?以下是bash方式:

cat test.txt |  while read line; do echo -n "$line "; done

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


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

tr '\n' ' ' < input_filename

或完全删除换行符:

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

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

tr --delete '\n' < input.txt > output.txt
cat file | xargs

为了完整起见