一尘不染

如何使用 sed 将每个换行符 (\n) 替换为空格?

css

如何使用该命令将换行符 (” \n“)替换为空格 (” “) ?``sed

我尝试失败:

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

我如何解决它?


阅读 883

收藏
2022-02-22

共1个答案

一尘不染

将此解决方案与 GNU 一起使用sed

sed ':a;N;$!ba;s/\n/ /g' file

这将在循环中读取整个文件 ( ':a;N;$!ba),然后用空格 ( ) 替换换行符s/\n/ /g。如果需要,可以简单地附加额外的替换。

解释:

  1. sed首先将第一行(不包括换行符)读入模式空间。
  2. 通过创建标签:a
  3. 通过 . 将换行符和下一行添加到模式空间N
  4. 如果我们在最后一行之前,则跳转到创建的标签$!ba$!意味着不在最后一行执行。这是避免N再次执行的必要条件,如果没有更多输入,则会终止脚本!)。
  5. 最后,替换用模式空间(即整个文件)上的空格替换每个换行符。

这是适用于 BSD 和 OS X 的跨平台兼容语法sed

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' file

如您所见,sed用于这个原本简单的问题是有问题的。

2022-02-22