如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
如何使用sed命令将换行符(“\n”)替换为空格(“”)?
我尝试过:
sed 's#\n# #g' file
sed 's#^$# #g' file
如何修复?
当前回答
还有一种选择:
tr-s“[:space:]”“”<filename>filename2&&mv filename2文件名
其中tr-s表示:
-s、 --挤压重复替换重复字符的每个序列其列在最后指定的SET中,只出现一次该字符
这将使用单个空格替换文件中的所有空格序列,将结果写入新文件,然后将新文件重命名为原始名称。
其他回答
@OP,如果您想替换文件中的换行符,可以只使用dos2unix(或unix2dox)
dos2unix yourfile yourfile
还有一种选择:
tr-s“[:space:]”“”<filename>filename2&&mv filename2文件名
其中tr-s表示:
-s、 --挤压重复替换重复字符的每个序列其列在最后指定的SET中,只出现一次该字符
这将使用单个空格替换文件中的所有空格序列,将结果写入新文件,然后将新文件重命名为原始名称。
也可以使用标准文本编辑器:
printf '%s\n' '%s/$/ /' '%j' 'w' | ed -s file
注意:这会将结果保存回文件。
与这里的大多数sed答案一样,此解决方案的缺点是必须首先将整个文件加载到内存中。
使用允许查找和替换\n
sed -ie -z 's/Marker\n/# Marker Comment\nMarker\n/g' myfile.txt
标记
成为
#标记注释标记
在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 ~]#