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

基于首字段分割大文件(非连续重复需生成新文件)并添加唯一标识

解决方案:用AWK实现按首字段动态分割文件(重复字段重新出现时生成新文件)

这需求用AWK就能完美解决,我平时处理这类文本分割需求也常用它,核心思路就是跟踪前一行的首字段,每次发现当前行首字段和前一行不同时,就切换到新的输出文件并递增计数。下面是直接可用的脚本:

awk '{
    # 提取当前行的第一个字段
    current_field = $1
    # 如果当前字段和上一行不同,切换输出文件
    if (current_field != previous_field) {
        # 递增计数器,用于生成文件后缀
        file_count++
        # 关闭之前的文件句柄,避免打开过多文件导致报错
        close(output_file)
        # 拼接新的输出文件名,格式为「字段值.计数器」
        output_file = current_field "." file_count
    }
    # 将当前行写入对应的输出文件
    print > output_file
    # 更新上一行字段为当前值,供下一次判断使用
    previous_field = current_field
}' test_file

脚本细节说明:

  • 字段跟踪逻辑:通过previous_field变量记录上一行的首字段,每次和当前行的current_field对比,判断是否需要切换文件
  • 重复字段处理:file_count变量每次切换时递增,哪怕同一个字段(比如示例中的a)再次出现,只要和前一行不同,就会生成带新后缀的文件(比如a.3)
  • 资源管理:close(output_file)是必须的,AWK默认不会自动关闭文件,不关闭的话处理大文件时很容易触发「打开文件过多」的系统错误
  • 文件名格式:严格按照你需要的字段值.序号格式生成,刚好对应你要的a.1、b.2、a.3、c.4这四个结果

运行这个脚本后,你就能得到符合要求的四个文件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:18:09