如何使用 sed 将每个换行符 (\n) 替换为空格?
发布于 2022-03-22 23:30:37
如何使用该命令将换行符 (” \n
“)替换为空格 (” “) ?``sed
我尝试失败:
sed 's#\n# #g' file
sed 's#^$# #g' file
我如何解决它?
关注者
0
被浏览
101
1 个回答
-
将此解决方案与 GNU 一起使用
sed
:sed ':a;N;$!ba;s/\n/ /g' file
这将在循环中读取整个文件 (
':a;N;$!ba
),然后用空格 ( ) 替换换行符s/\n/ /g
。如果需要,可以简单地附加额外的替换。解释:
sed
首先将第一行(不包括换行符)读入模式空间。- 通过创建标签
:a
。 - 通过 . 将换行符和下一行添加到模式空间
N
。 - 如果我们在最后一行之前,则跳转到创建的标签
$!ba
($!
意味着不在最后一行执行。这是避免N
再次执行的必要条件,如果没有更多输入,则会终止脚本!)。 - 最后,替换用模式空间(即整个文件)上的空格替换每个换行符。
这是适用于 BSD 和 OS X 的跨平台兼容语法
sed
:sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' file
如您所见,
sed
用于这个原本简单的问题是有问题的。