如何将换行符(“ \n ”)替换为空格(“ “)使用sed命令?
我尝试失败:
sed 's#n# #g' file
sed 's#^$# #g' file
我如何解决它?
#1楼
sed旨在用于基于行的输入。 虽然它可以满足您的需求。
更好的选择是使用tr命令,如下所示:
tr 'n' ' ' < input_filename
或完全删除换行符:
tr -d 'n' < input.txt > output.txt
或您是否拥有GNU版本(及其长选项)
tr --delete 'n' < input.txt > output.txt
#2楼
Perl版本以您期望的方式工作。
perl -i -p -e 's/n//' file
正如评论中指出的那样,值得注意的是此编辑已就位。 -i.bak会在替换前为您提供原始文件的备份,以防您的正则表达式不如您想象的那样聪明。
#3楼
我不是专家,但是我想sed您首先需要将下一行添加到模式空间中,使用“ N ”进行bij。 在sed&awk (Dale Dougherty和Arnold Robbins; O'Reilly 1997; 预览的第107页)的“高级sed命令”中的“多行模式空间”部分中:
multiline Next(N)命令通过读取输入的新行并将其附加到模式空间的内容来创建多行模式空间。 模式空间的原始内容和新输入行用换行符分隔。 嵌入的换行符可以通过转义序列“ \ n”在模式中进行匹配。 在多行