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

Ubuntu环境下移除TXT文件中仅单个空白行分隔的空白行

解决Ubuntu下移除单行空白行、保留多行空白行的问题

你的需求可以通过awk轻松实现,先分析你之前尝试的命令为什么无效:

  • awk -F, '{gsub("\n","",$1); print}' archivo.txt:这个命令是替换每行内部的换行符,完全没有处理行与行之间的空白行,方向错误。
  • sed 's/ //g' input.txt > no-spaces.txt:这个是删除所有空格字符,不是空白行,和需求不匹配。

正确的AWK脚本

下面的脚本会移除仅分隔两行的单个空白行,同时保留连续多个空白行:

awk '
    /^$/ { cnt++; next }
    {
        # 遇到非空行时,若之前有多个空白行,全部输出
        if (cnt > 1) {
            while (cnt--) print ""
        }
        print $0
        cnt = 0
    }
    END {
        # 处理文件末尾的空白行:单个空白行保留,多个空白行全部保留
        if (cnt >= 1) {
            for (i=0; i<cnt; i++) print ""
        }
    }
' input.txt > output.txt

脚本逻辑说明

  1. 遇到空白行时,累加计数器cnt,跳过当前行处理。
  2. 遇到非空行时:
    • 如果之前累积了多个空白行(cnt>1),先输出所有累积的空白行,再输出当前非空行。
    • 如果之前只有单个空白行(cnt=1),直接输出当前非空行,跳过那个空白行。
  3. 文件末尾的空白行全部保留,无论单个还是多个。

测试示例

假设输入文件内容:

第一行内容

第二行内容


第三行内容

第四行内容

处理后输出:

第一行内容
第二行内容


第三行内容
第四行内容

可以看到,分隔两行的单个空白行被移除,连续的两个空白行被完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:56:26