Notepad++如何合并空行分隔的非空行组并保留空行?
合并连续非空行为单行并保留空行的解决方案
我明白你要的是把连续的非空行合并成一行,同时保留原有的空行分隔,对吧?我之前处理文本的时候也遇到过类似需求,给你几个实用的实现方案:
Python 脚本方案
如果你熟悉Python,这个脚本可以轻松处理文本文件:
with open('input.txt', 'r') as input_file, open('output.txt', 'w') as output_file: current_lines = [] for line in input_file: cleaned_line = line.strip() if cleaned_line: # 收集非空行内容 current_lines.append(cleaned_line) else: # 遇到空行时,输出之前收集的内容 if current_lines: output_file.write(' '.join(current_lines) + '\n') current_lines = [] # 保留空行 output_file.write('\n') # 处理文件末尾的最后一组非空行 if current_lines: output_file.write(' '.join(current_lines) + '\n')
使用方法:
- 把你的输入文本保存为
input.txt - 运行这个脚本,会生成处理好的
output.txt - 打开
output.txt就能看到符合要求的结果
命令行 awk 方案
如果你用Linux/macOS或者WSL,awk命令处理这种文本超级高效:
awk ' # 处理非空行:把内容拼接到block变量里 NF { block = block $0 " " } # 处理空行:输出之前的非空块,然后保留空行 !NF { if (block) { sub(/ $/, "", block) # 去掉末尾多余的空格 print block block = "" } print "" } # 处理文件末尾的最后一组非空行 END { if (block) { sub(/ $/, "", block) print block } } ' input.txt > output.txt
直接在终端运行这条命令,就能把input.txt处理后输出到output.txt里,完全符合你的示例需求。
测试一下你给的输入内容,这两个方案都能输出你想要的结果:
Hi, My name is Max
What are you doing Right now?
Hi Hello World
内容的提问来源于stack exchange,提问作者Rahil
相关产品推荐
相关产品推荐

