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

我尝试过:

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

如何修复?


当前回答

这里是没有缓冲区的sed(适用于实时输出)。示例:在HTML中用<br/>break替换\n

echo -e "1\n2\n3" | sed 's/.*$/&<br\/>/'

其他回答

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

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

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

sed -n "s/^$//;t;p;"

以下内容比大多数答案简单得多。此外,它还在发挥作用:

echo `sed -e 's/$/\ |\ /g' file`

这里是没有缓冲区的sed(适用于实时输出)。示例:在HTML中用<br/>break替换\n

echo -e "1\n2\n3" | sed 's/.*$/&<br\/>/'

在某些情况下,您可以将RS更改为其他字符串或字符。这样,\n可用于sub/gsub:

$ gawk 'BEGIN {RS="dn" } {gsub("\n"," ") ;print $0 }' file

shell脚本的强大之处在于,如果您不知道如何以一种方式执行,您可以用另一种方式来执行。很多时候,你要考虑的事情比简单问题的复杂解决方案要多。

关于呆呆的事情。。。并将文件读入内存,我不知道这一点,但对我来说,gawk似乎一次只能使用一行,而且速度非常快(没有其他一些快,但编写和测试的时间也很重要)。

我处理MB甚至GB的数据,我发现的唯一限制是行大小。