これでうまくいきます。かなり読みやすく、理解しやすいと思います。
awk -F',' 'BEGIN { count=0; filename=1 }
x[$1]++==0 {count++}
count==4 { count=1; filename++}
{print >> filename".csv"; close(filename".csv");}' file
0 のカウントと 1 のファイル名から始めます。次に、最初の列から取得した一意の値をそれぞれカウントし、4 番目の値になるたびに、カウントをリセットして次のファイル名に移動します。
これは私が使用したサンプルデータです。これは、いくつかの行を追加したものです。
~$ cat test.txt
111,1,0,1
111,1,1,1
222,1,1,1
333,1,0,0
333,1,1,1
444,1,1,1
444,0,0,0
555,1,1,1
666,1,0,0
777,1,1,1
777,1,0,1
777,1,1,0
777,1,1,1
888,1,0,1
888,1,1,1
999,1,1,1
999,0,0,0
999,0,0,1
101,0,0,0
102,0,0,0
awk を次のように実行します。
~$ awk -F',' 'BEGIN { count=0; filename=1 }
x[$1]++==0 {count++}
count==4 { count=1; filename++}
{print >> filename".csv"; close(filename".csv");}' test.txt
次の出力ファイルとコンテンツが表示されます。
~$ cat 1.csv
111,1,0,1
111,1,1,1
222,1,1,1
333,1,0,0
333,1,1,1
~$ cat 2.csv
444,1,1,1
444,0,0,0
555,1,1,1
666,1,0,0
~$ cat 3.csv
777,1,1,1
777,1,0,1
777,1,1,0
777,1,1,1
888,1,0,1
888,1,1,1
999,1,1,1
999,0,0,0
999,0,0,1
~$ cat 4.csv
101,0,0,0
102,0,0,0