format text

input file test.csv has following structure.

SCHEM1.TAB1;COL1;DATATYPE;NOTNULL--
SCHEMA1.TAB1;COL2;DATATYPE;NOTNULL;WITH DEFAULT;--
....
SCHEMA1.TABn;COL1;DATATYPE;NOTNULL;WITH DEFAULT;

i started using awk but text is not tab seperated.its just ; seperated.
how to print

output should be:

ALTER TABLE SCHEMA1.TAB1 add COL1 DATATYPE NOTNULL;
ALTER TABLE SCHEMA1.TAB1 add COL2 DATATYPE NOTNULL WITHDEFAULT;
....

ALTER TABLE SCHEMA1.TABn add COL DATATYPE NOTNULL  WITHDEFAULT;

That is no problem for awk since you can specify a different, even multiple and reg exp as delimeters. Try:

awk -F";" '......
#!/bin/ksh
INPUTFILE=InputFile.csv
while read inputline
do
column1="$(echo $inputline | cut -d';' -f1)"
echo column1 = $column1 ;
 
column2="$(echo $inputline | cut -d';' -f2)"
echo column2 = $column2 ;
 
column3="$(echo $inputline | cut -d';' -f3)"
echo column3 = $column3 ;
 
column4="$(echo $inputline | cut -d';' -f4)"
echo column4 = $column4 ;
 
column5="$(echo $inputline | cut -d';' -f5)"
echo column5 = $column5 ;
 
db2 "ALTER TABLE ${column1} add ${column2} DATATYPE ${column3} ${column4} ${column5}"
 
done < $INPUTFILE

If You want to use 'awk' ::

column1=`echo "$inputline" | awk -F';' '{print $1}'`
column2=`echo "$inputline" | awk -F';' '{print $2}'`
column3=`echo "$inputline" | awk -F';' '{print $3}'`
column4=`echo "$inputline" | awk -F';' '{print $4}'`
column5=`echo "$inputline" | awk -F';' '{print $5}'`

Keep on incrementing the inputline number , so that the command is executed once for every input line.

Can try with sed:

$ cat temp.txt
SCHEM1.TAB1;COL1;DATATYPE;NOTNULL--
SCHEMA1.TAB1;COL2;DATATYPE;NOTNULL;WITH DEFAULT;--
....
SCHEMA1.TABn;COL1;DATATYPE;NOTNULL;WITH DEFAULT;
$ sed -e 's/\(.*\)/\ALTER TABLE \1/' -e 's/;/ /g' -e 's/--/;/' temp.txt
ALTER TABLE SCHEM1.TAB1 COL1 DATATYPE NOTNULL;
ALTER TABLE SCHEMA1.TAB1 COL2 DATATYPE NOTNULL WITH DEFAULT ;
ALTER TABLE ....
ALTER TABLE SCHEMA1.TABn COL1 DATATYPE NOTNULL WITH DEFAULT

Or try..

sed 's/\([^; ]*\) \([^; ]*\)/\1\2/g;s/[;-]/ /g;s/^\([^ ]*\) \(.*\)/ALTER TABLE \1 add \2;/' inputfile