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

MacOS zsh下如何为同校验和行组间插入空行并统计组数

解决方案:为重复校验和行组添加空行并统计组数

场景1:直接修改原流程,一步生成带空行的结果

可以替换原步骤3的awk命令,同时完成筛选重复行、分组加空行和统计相关数据三个操作:

LC_ALL=C awk '
# 第一次遍历file2.txt,统计每个校验和的出现次数
FNR==NR {
    a[$1]++
    next
}
# 第二次遍历,仅保留出现次数>1的行(即重复校验和的行)
a[$1] > 1 {
    # 当前行校验和与上一行不同且非第一行时,插入空行并计数
    if ($1 != prev && prev != "") {
        print ""
        blank_count++
    }
    print $0
    prev = $1
}
# 最后输出统计结果
END {
    print "\n插入的空行数:", blank_count
    print "重复校验和的组数:", blank_count + 1
}' file2.txt file2.txt > file3_formatted.txt

执行后,file3_formatted.txt会在不同校验和的行组间自动插入空行,同时终端会输出空行数和对应的重复校验和组数(空行数=组数-1)。

场景2:处理已生成的file3.txt

如果已经得到了file3.txt(已按校验和排序),可以直接用以下命令格式化:

LC_ALL=C awk '
{
    # 当前行校验和与上一行不同且非第一行时,插入空行并计数
    if ($1 != prev && prev != "") {
        print ""
        blank_count++
    }
    print $0
    prev = $1
}
END {
    print "\n插入的空行数:", blank_count
    print "重复校验和的组数:", blank_count + 1
}' file3.txt > file3_formatted.txt

原理说明

  • 依赖file2.txt/file3.txt已按校验和排序的特性,相同校验和的行连续排列
  • 通过变量prev跟踪上一行的校验和,实现行组间的空行插入逻辑
  • LC_ALL=C确保在不同locale环境下处理结果一致,避免字符排序差异导致的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:15:43