如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
用任何字符串替换换行符,并替换最后一个换行符
纯tr解决方案只能替换为单个字符,纯sed解决方案不能替换输入的最后一行。以下解决方案解决了这些问题,并且似乎对二进制数据是安全的(即使使用UTF-8语言环境):
printf '1\n2\n3\n' |
sed 's/%/%p/g;s/@/%a/g' | tr '\n' @ | sed 's/@/<br>/g;s/%a/@/g;s/%p/%/g'
结果:
1<br>2<br>3<br>
其他回答
以下内容比大多数答案简单得多。此外,它还在发挥作用:
echo `sed -e 's/$/\ |\ /g' file`
为什么我没有找到一个简单的awk解决方案?
awk '{printf $0}' file
printf将打印没有换行的每一行,如果您想用空格或其他分隔原始行:
awk '{printf $0 " "}' file
我使用了一种混合方法,通过使用tr用制表符替换换行符,然后用我想要的任何内容替换制表符,来绕过换行符的问题。在本例中,“”,因为我试图生成HTML分隔符。
echo -e "a\nb\nc\n" |tr '\n' '\t' | sed 's/\t/ <br> /g'`
这真的很简单。。。当我找到解决办法时,我真的很生气。又少了一个反斜杠。这就是:
sed -i "s/\\\\\n//g" filename
使用Awk:
awk "BEGIN { o=\"\" } { o=o \" \" \$0 } END { print o; }"