sed 合并由空行分隔的 N 个文本行?

2024-05-13

我搜索了一下,但没有找到针对这种特定情况的解决方案。给定一个输出任意数量的非空行组的管道,这些非空行组分隔成单个空行,是否有一个 sed 单行代码(或 awk 单行代码或 perl 单行代码)将非空行组组合成单行,同时保留空白行?例如,输入

one
two

three
four
five

six

seven
eight

应输出为

one two

three four five

six

seven eight

预先感谢所有回复的人。


这可能对你有用(GNU sed):

sed '/./{:a;N;s/\n\(.\)/ \1/;ta}' file

如果该行不为空,则读取以下行,如果该行不为空,则用空格替换换行符并重复,否则打印模式空格。如果该行首先是空的,则打印空行:这适用于空的第一行,如果不是这种情况,则非空行之间只有一个空行:

 sed ':a;N;s/\n\(.\)/ \1/;ta' file

就足够了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sed 合并由空行分隔的 N 个文本行? 的相关文章

随机推荐