如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
谁需要sed?以下是bash方式:
cat test.txt | while read line; do echo -n "$line "; done
其他回答
sed旨在用于基于行的输入。尽管它可以满足你的需要。
这里更好的选择是使用tr命令,如下所示:
tr '\n' ' ' < input_filename
或完全删除换行符:
tr -d '\n' < input.txt > output.txt
或者如果您有GNU版本(带有长选项)
tr --delete '\n' < input.txt > output.txt
@OP,如果您想替换文件中的换行符,可以只使用dos2unix(或unix2dox)
dos2unix yourfile yourfile
我使用了一种混合方法,通过使用tr用制表符替换换行符,然后用我想要的任何内容替换制表符,来绕过换行符的问题。在本例中,“”,因为我试图生成HTML分隔符。
echo -e "a\nb\nc\n" |tr '\n' '\t' | sed 's/\t/ <br> /g'`
您可以使用xargs-默认情况下,它将用空格替换\n。
但是,如果您的输入有任何未终止的引号,例如给定行上的引号符号不匹配,则会出现问题。
sed '1h;1!H;$!d
x;s/\n/ /g' YourFile
这不适用于巨大的文件(缓冲区限制),但如果有足够的内存来保存文件,则非常有效。(更正H->1h;在@hilojack的好话之后1!H)
另一个在读取时更改新行的版本(更多的cpu,更少的内存)
sed ':loop
$! N
s/\n/ /
t loop' YourFile