HI I HAVE A PROBLEM,MY SOURCE FILE IS OF PATTERN
S1,E-Certified,29,29,2.7,Certified,4,3,2.7,,0,0,0
S2,Certified,4,3,2.7,,0,0,0,,0
S3,E-Certified,29,29,2.7,,0,0,0
S4,,0,0,0,,0,0,0,,0,0,0,,0,0,0
AND THE EXPECTED OUTPUT IS
S1,E-Certified,29,29,2.7
S1,Certified,4,3,2.7
S2,Certified,4,3,2.7
S3,E-Certified,29,29,2.7
THE NUMBER OF FIELDS(NF) IN SOURCE FILE MAY BE MORE THAN 500. WHEREEVER THE FIRST NULL VALUE COMES IT SHOULD TRUNCATE THE ROW.
I TRIED TO SOLVE N WROTE THIS CODE,
awk -F\, '{
if ($2!="") printf$1FS fi;c=0
for(i=2;i<=NF;i++)
{
if ($i=="") i=NF+1 fi;
printf$i ($i!=""?++c%4?i==NF?RS:FS:(i<NF?RS$1FS:RS):EXIT);
}
}'
bUT THE OUTPUT COMING IS
S1,E-Certified,29,29,2.7
S1,Certified,4,3,2.7
S1,S2,Certified,4,3,2.7
S2,S3,E-Certified,29,29,2.7
S3,
I AM NOT ABLE TO FIND OUT THE ERROR. IF ANYONE FINDS ANY PROBABLE SOLUTION PLZ SUGGEST ME.
I Solved the problem. The code should be
awk -F\, '{
if ($2!="") printf$1FS fi;c=0
for(i=2;i<=NF;i++)
{
if ($i=="") i+=NF fi;
printf$i ($i!=""?++c%4?i==NF?RS:FS:($(i+1)!=""?RS$1FS:RS):EXIT);
}
}'