Spliting a line after 255 characters.

Hi Guys,
I have a file which contains multiple lines. I need to split each line 255 characters and then I need to add call statement in the front and semi colon at the end.

I/P:

call sp_rebuildindex('aaa.aaa','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1] column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8] column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');
call sp_rebuildindex('bbb.bbb','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1] column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8] column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');

O/P:

call sp_rebuildindex('aaa.aaa','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1]');
call sp_rebuildindex('aaa.aaa','column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8]');
call sp_rebuildindex('aaa.aaa','column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');
call sp_rebuildindex('bbb.bbb','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1]');
call sp_rebuildindex('bbb.bbb','column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8]');
call sp_rebuildindex('bbb.bbb','column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');

Options I tried:

sed -e "s/.\{255\}/&\n/g" <filename>

If the line end with column then I replaced with ');

I am not sure how to copy the previous copy command. Any help is highly appreciated.

If none of the columns are text strings, you may be able to use the fold command to split upon spaces:

fold -w 255 -s < inputfile > outputfile

to avoid splitting in an awkward place.

I have already tried that option but I need to add "call sp_rebuildindex('<tablename>','column" each line. The table name should be copied from the previous line if the call doesn't exist on that line.

Try

awk -F, '
        {i = 0
         MX = split ($2, T, "]") - 2
         while (i <= MX)        {OUT = $1 OFS SQ
                                 while ((length (OUT T[i+1]) < 255) && (i <= MX)) OUT = OUT T[++i] "]"
                                 sub (SQ "( |" SQ ")", SQ, OUT)
                                 print  OUT SQ ");"
                                }
        }
' OFS="," SQ="'" file
call sp_rebuildindex('aaa.aaa','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1]');
call sp_rebuildindex('aaa.aaa','column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8]');
call sp_rebuildindex('aaa.aaa','column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');
call sp_rebuildindex('bbb.bbb','column [CUST_ACCT_ID] column [CHANNEL_TYPE_CD1] column [CHANNEL_TYPE_CD2] column [ORD_PRFL_CD] column [MCK_KU_TERM_RSN_CD] column [CUST_STAT_XMPT_CD] column [DLVRY_FEE_CD] column [MCK_KU_DEA_ELIG_CD1]');
call sp_rebuildindex('bbb.bbb','column [MCK_KU_DEA_ELIG_CD2] column [MCK_KU_DEA_ELIG_CD3] column [MCK_KU_DEA_ELIG_CD4] column [MCK_KU_DEA_ELIG_CD5] column [MCK_KU_DEA_ELIG_CD6] column [MCK_KU_DEA_ELIG_CD7] column [MCK_KU_DEA_ELIG_CD8]');
call sp_rebuildindex('bbb.bbb','column [MCK_KU_PVT_LBL_CD] column [ORDR_CONFO_CD] column [POG_OPTN_CD] column [POG_SIGNAGE_CD] column [OTC_RETL_PRC_HIER_CD] column [RX_RETL_PRC_HIER_CD] column [MCK_KU_CONSOL_TYP_CD] column [MCK_KU_MKTG_OPTN_CD]');
1 Like

Thanks for your help and It worked fine.