You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed移除文本中重复的全空格空白行?

针对你在RH5上处理遗留程序打印文件的需求,我整理了两个实用的解决方案,都是系统自带工具,不用额外安装软件,完美适配遗留环境:

方案1:使用awk(推荐,逻辑清晰易维护)

awk是处理文本行的利器,这个方案精准识别全空格空白行,只合并连续的重复空白行,完全不会改动其他行的空格格式:

awk 'BEGIN{prev_empty=0} /^[[:space:]]*$/{if(!prev_empty){print; prev_empty=1} next} {print; prev_empty=0}' your_print_file.txt | lp

逻辑拆解:

  • BEGIN{prev_empty=0}:初始化标记,默认上一行不是空白行
  • /^[[:space:]]*$/:匹配所有由空格/制表符组成的空白行(如果你的文件只有空格,也可以写成/^ *$/,更精准)
  • 当遇到空白行时,只有上一行不是空白行才打印,同时标记“上一行是空白行”;重复的空白行直接跳过
  • 非空白行直接打印,并重置标记为“上一行不是空白行”
方案2:使用sed(紧凑单行命令)

如果你偏爱更简洁的单行命令,sed也能实现同样效果:

sed '/^[[:space:]]*$/{N;/^\n[[:space:]]*$/D}' your_print_file.txt | lp

逻辑拆解:

  • 匹配到空白行后,读取下一行合并成多行模式
  • 如果合并后的两行都是空白行,就删除第一行并循环处理,直到只剩一行空白行
  • 非空白行正常输出,完全保留原有格式
集成到打印流程

如果你的遗留程序是直接输出到打印管道,可以直接把处理命令插进去:

your_legacy_program | awk 'BEGIN{prev_empty=0} /^[[:space:]]*$/{if(!prev_empty){print; prev_empty=1} next} {print; prev_empty=0}' | lp

这样就能在打印前自动处理重复空白行,完全不影响原有带内容行的格式。

内容的提问来源于stack exchange,提问作者Hussain Akbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:42:29