如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
也可以使用标准文本编辑器:
printf '%s\n' '%s/$/ /' '%j' 'w' | ed -s file
注意:这会将结果保存回文件。
与这里的大多数sed答案一样,此解决方案的缺点是必须首先将整个文件加载到内存中。
其他回答
Perl版本以您预期的方式工作。
perl -i -p -e 's/\n//' file
正如评论中所指出的,值得注意的是,这些编辑是到位的-i.bak将在替换之前为您提供原始文件的备份,以防您的正则表达式没有您想象的那么聪明。
您可以使用xargs-默认情况下,它将用空格替换\n。
但是,如果您的输入有任何未终止的引号,例如给定行上的引号符号不匹配,则会出现问题。
谁需要sed?以下是bash方式:
cat test.txt | while read line; do echo -n "$line "; done
这里是没有缓冲区的sed(适用于实时输出)。示例:在HTML中用<br/>break替换\n
echo -e "1\n2\n3" | sed 's/.*$/&<br\/>/'
答案是:标签。。。
如何使用sed替换换行符?
…在命令行的freebsd 7.2中不起作用:
( echo foo ; echo bar ) | sed ':a;N;$!ba;s/\n/ /g' sed: 1: ":a;N;$!ba;s/\n/ /g": unused label 'a;N;$!ba;s/\n/ /g' foo bar
但如果您将sed脚本放在文件中或使用-e“构建”sed脚本。。。
> (echo foo; echo bar) | sed -e :a -e N -e '$!ba' -e 's/\n/ /g' foo bar
或
> cat > x.sed << eof
:a
N
$!ba
s/\n/ /g
eof
> (echo foo; echo bar) | sed -f x.sed
foo bar
也许OS X中的sed是类似的。