如何使用sed替换换行符(\ n)?

如何使用sed替换换行符(\ n)?

如何\n使用sed命令替换换行符()?

我没试成功:

sed 's#\n# #g' file
sed 's#^$# #g' file

我如何解决它?


阿晨1998
浏览 3845回答 4
4回答

收到一只叮咚

在GNU中使用此解决方案sed:sed ':a;N;$!ba;s/\n/ /g' file这将在循环中读取整个文件,然后用空格替换换行符。说明:通过创建标签:a。将当前和下一行附加到模式空间via N。如果我们在最后一行之前,则跳转到创建的标签$!ba($!意味着不要在最后一行执行,因为应该有一个最终换行符)。最后,替换用模式空间(即整个文件)上的空格替换每个换行符。这是与BSD和OS X一起使用的跨平台兼容语法sed(根据@Benjie评论):sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' file如您所见,使用sed这个简单的问题是有问题的。有关更简单和适当的解决方案,请参阅此答案。

达令说

使用tr呢?tr&nbsp;'\n'&nbsp;'&nbsp;'&nbsp;<&nbsp;input_filename或完全删除换行符:tr&nbsp;-d&nbsp;'\n'&nbsp;<&nbsp;input.txt&nbsp;>&nbsp;output.txt或者如果你有GNU版本(有很长的选项)tr&nbsp;--delete&nbsp;'\n'&nbsp;<&nbsp;input.txt&nbsp;>&nbsp;output.txt

aluckdog

更短的awk替代方案:awk&nbsp;1&nbsp;ORS='&nbsp;'说明awk程序由条件代码块组成的规则构成,即:condition&nbsp;{&nbsp;code-block&nbsp;}如果省略代码块,则使用默认值:{ print $0 }。因此,它1被解释为真实条件并且print $0对每一行执行。当awk读取输入时,它会根据RS(记录分隔符)的值将其拆分为记录,默认情况下是新行,因此awk默认情况下会解析输入行。拆分还涉及RS从输入记录中剥离。现在,在打印记录时,ORS(输出记录分隔符)会附加到其上,默认值也是换行符。因此,通过更改ORS为空格,所有换行符都将更改为空格。
打开App,查看更多内容
随时随地看视频慕课网APP