大容量csvファイルを分割する必要がある

大容量csvファイルを分割する必要がある

csvファイルがあるので、より小さなファイルに分割する必要があります。 Split -l 20000 test.csv 問題ありません。私の問題は、ファイルに別のヘッダーが含まれていることです。たとえば、+-1000行ごとに分割したいのですが、給与見出しの後に分割し、新しいファイルをcustヘッダーで始める必要があります。

顧客ヘッダー,xxx,xxxxxx,xxxxxx
txn ヘッダー,xxxx,xxx,,xxxx,xxxxx,,xxx
詳細タイトル、xxxx、xxxx、xxxxxx、xxxx、xxxx
詳細タイトル,xxxxxxxx,xxxxxxxxxx,xxx,,
支払名、、、、、、xxxx、xxxxx
顧客ヘッダー,xxx,xxxxxx,xxxxxx
txn ヘッダー,xxxx,xxx,,xxxx,xxxxx,,xxx
詳細タイトル、xxxx、xxxx、xxxxxx、xxxx、xxxx
支払名、、、、、、xxxx、xxxxx
顧客ヘッダー,xxx,xxxxxx,xxxxxx
txn ヘッダー,xxxx,xxx,,xxxx,xxxxx,,xxx
詳細タイトル、xxxx、xxxx、xxxxxx、xxxx、xxxx
支払名、、、、、、xxxx、xxxxx

ベストアンサー1

あなたはこれを行うことができますawk

awk -vfilename=output -vcut=1000  '
    BEGIN { nl=0; nf=1; f=filename "." nf;} 
    ++nl >= cut && /^cust header,/ {
         close(f); nl=0; f=filename "." ++nf}
   {print > f}' < file

数が(ここでは1000)より大きく、cut現在の行で終わると表示される行数を記録しますcust header,。出力ファイル名はoutput.1、、、output.2...(filename変数)です。

おすすめ記事