awk solution for Splitting a file.

Hi I have a csv file with as below

sdg-catalog-00000001
sdg-sku-00000317
sdg-sku-00000318
sdg-sku-00000319
sdg-sku-00000320
sdg-catalog-00000002
sdg-sku-00000321
sdg-sku-00000322
sdg-sku-00000323
sdg-sku-00000324
sdg-sku-00000325
sdg-catalog-00000003
sdg-sku-00000326
sdg-sku-00000327
sdg-sku-00000328
sdg-sku-00000329
sdg-sku-00000330
sdg-sku-00000330
sdg-sku-00000330
sdg-catalog-00000004
sdg-sku-00000332
sdg-sku-00000333
sdg-sku-00000334
sdg-sku-00000335
...
...
...
sdg-catalog-00000050
...
...

I would like to split the file in to 50 csv files as a parts below accordingly.
Any simple awk solution for this please.

sdg-catalog-00000001

sdg-sku-00000317
sdg-sku-00000318
sdg-sku-00000319
sdg-sku-00000320

sdg-catalog-00000002

sdg-sku-00000321
sdg-sku-00000322
sdg-sku-00000323
sdg-sku-00000324
sdg-sku-00000325

sdg-catalog-00000003

sdg-sku-00000326
sdg-sku-00000327
sdg-sku-00000328
sdg-sku-00000329
sdg-sku-00000330
sdg-sku-00000330
sdg-sku-00000330

sdg-catalog-00000004

sdg-sku-00000332
sdg-sku-00000333
sdg-sku-00000334
sdg-sku-00000335

could someone help me in this.

Hello Raghuram717,

Could you please try following(haven't tested it though).

awk '/^sdg-catalog/{close(file);file=$0;next} {print > file}'  Input_file

Thanks,
R. Singh

1 Like

Slight correction to Ravinder's suggestion:

awk '/^sdg-catalog/{close(file);file=$0;next} {print > file}'  Input_file
2 Likes

yes this was working for me...!