如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
tr '\n' ' '
是命令。
简单易用。
其他回答
可以使用xargs:
seq 10 | xargs
or
seq 10 | xargs echo -n
答案是:标签。。。
如何使用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是类似的。
这真的很简单。。。当我找到解决办法时,我真的很生气。又少了一个反斜杠。这就是:
sed -i "s/\\\\\n//g" filename
较短的锥子替代品:
awk 1 ORS=' '
解释
awk程序由由条件代码块组成的规则组成,即:
condition { code-block }
如果省略了代码块,则使用默认值:{print$0}。因此,1被解释为真条件,并且每行执行打印$0。
当awk读取输入时,它会根据RS(记录分隔符)的值将其拆分为记录,默认情况下是一个换行符,因此awk默认情况下将按行解析输入。拆分还涉及从输入记录中剥离RS。
现在,当打印记录时,ORS(输出记录分隔符)被附加到记录上,默认值也是一个换行符。因此,通过将ORS更改为空格,所有换行符都将更改为空格。
为了使用awk将所有换行符替换为空格,而不将整个文件读入内存:
awk '{printf "%s ", $0}' inputfile
如果需要最后一行换行符:
awk '{printf "%s ", $0} END {printf "\n"}' inputfile
可以使用空格以外的字符:
awk '{printf "%s|", $0} END {printf "\n"}' inputfile