ファイルを複数のファイルに分割する必要がありますが、グループ化されたデータを同じファイルに保持する必要があります。 [重複]

ファイルを複数のファイルに分割する必要がありますが、グループ化されたデータを同じファイルに保持する必要があります。 [重複]

この質問は重複しません。これは、共通の値/行セットが同じパーティションファイルに保持されていること(および複数のパーティションファイルに分散されていない)を確認する必要があるためです。

最終的に解決策を見つけるためにインターネットを検索しようとしましたが、私の要件に合った解決策を見つけることができませんでした。

問題:大容量ファイルがあり、サイズが2 GBを超える場合は、複数のファイルに分割する必要があります。これにはレコードカウントを使用する予定です。しかし、問題は、ファイルを分割するときにグループデータを分割しないでください。単一ファイルとしてアーカイブする必要があります。

前任者:

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」などの記録は1つのファイルとして保存する必要があります。グループ化されたすべてのデータは同じパーティションファイルに保存する必要があります。上記の例では、合計3つのファイルが生成されます。 (ただし、同じグループデータは1つの分割ファイルに残る必要があります。)

上記の例では、次のようなサンプル出力が必要です。

ジョブ file_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

ジョブ file_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

ジョブ file_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

関連情報