如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
这里是没有缓冲区的sed(适用于实时输出)。示例:在HTML中用<br/>break替换\n
echo -e "1\n2\n3" | sed 's/.*$/&<br\/>/'
其他回答
我特别喜欢的解决方案是在保留空间中追加所有文件,并替换文件末尾的所有换行符:
$ (echo foo; echo bar) | sed -n 'H;${x;s/\n//g;p;}'
foobar
然而,有人告诉我,在一些sed实现中,保持空间可能是有限的。
要删除空行,请执行以下操作:
sed -n "s/^$//;t;p;"
在sed替换部分中,键入反斜杠,按回车键转到第二行,然后以/g'结尾:
sed 's/>/\
/g'
[root@localhost ~]# echo "1st</first>2nd</second>3rd</third>" | sed 's/>/\
> /g'
1st</first
2nd</second
3rd</third
[root@localhost ~]#
这真的很简单。。。当我找到解决办法时,我真的很生气。又少了一个反斜杠。这就是:
sed -i "s/\\\\\n//g" filename
在某些情况下,您可以将RS更改为其他字符串或字符。这样,\n可用于sub/gsub:
$ gawk 'BEGIN {RS="dn" } {gsub("\n"," ") ;print $0 }' file
shell脚本的强大之处在于,如果您不知道如何以一种方式执行,您可以用另一种方式来执行。很多时候,你要考虑的事情比简单问题的复杂解决方案要多。
关于呆呆的事情。。。并将文件读入内存,我不知道这一点,但对我来说,gawk似乎一次只能使用一行,而且速度非常快(没有其他一些快,但编写和测试的时间也很重要)。
我处理MB甚至GB的数据,我发现的唯一限制是行大小。