需要将一个文件拆分为多个文件,但确保分组的数据保留在同一个文件中

需要将一个文件拆分为多个文件,但确保分组的数据保留在同一个文件中

这个问题不是重复的,因为这里我们还需要确保该组公共值/行保留在同一个拆分文件中(并且不会分散在多个拆分文件中)。

所有,我尝试用谷歌搜索解决方案,但没有找到适合我要求的解决方案。

问题:我有一个巨大的文件,如果大小超过 2GB,需要将其拆分为多个文件。我计划使用记录计数来做到这一点。但挑战是,当我拆分文件时,组数据不应该拆分。它应该保留在单个文件中。

前任:

A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
D,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z

在上面的示例中,假设我的组键是第一列。因此,如果我决定将一个文件拆分为多个文件(每个文件中的记录计数被截断为7最大记录),我不希望将值为“A”的记录拆分为多个文件。同样,带有“B”、“C”等的记录也应保留在单个文件中。所有分组数据应保留在同一个拆分文件中。从上面的示例中总共创建了 3 个文件(但相同的组数据应保留在单个文件中)分割文件)

对于上面的示例:下面应该是示例输出:

操作文件_1

A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z

操作文件_2

B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z

操作文件_3

D,6,3,6/110/2018,A,Y,Z

答案1

$ awk -F, '{outfile="output."$1; print $0 > outfile}' input
$ ls
input    output.A output.B output.C output.D

相关内容