Hii
I tried to get it in bash and it looks that it worked with me:
cat FILE | while read l; do
DATA_TYPE_NEW=`echo $l | awk -F'DATA_TYPE' '{print $1}'`
if [ "${DATA_TYPE}" = "${DATA_TYPE_NEW}" ] ; then
WORD_LEN=$(( `echo $l|wc -m` -1));
CUREENT_LINE_LEN=$(( `echo $LINE |sed 's/,//g'| wc -m` -1 )) ;
LINE_LEN=$(( ${WORD_LEN} + ${CUREENT_LINE_LEN} )) ;
if [ "${LINE_LEN}" -gt "115" ] ;
then
echo $LINE;
LINE="$l"
else
LINE="${LINE},${l}";
fi;
else
DATA_TYPE="${DATA_TYPE_NEW}";
echo $LINE;
LINE=${l};
fi
[ "$l" = "0004FILE_END" ] && echo $l && exit 0
done | sed 's/,/'`echo -e "\01C"`'/g'
Mohammed Ameen Al-Qudah
On , Husam <
haban...@gmail.com> wrote:
> Thanks Mohammad and Yaman
>
> I will try this and report back
>
>
>
>
> On Sun, Jun 19, 2011 at 9:21 PM, Yaman Saqqa
abul...@gmail.com> wrote:
>
> Try this one, baring in mind:
>
> It is not perfect or optimizedTakes data from stdin and spits to stdout
> Assumes data value does not itself exceed 115)
>
>
>
> #!/bin/perl
>
>
> $count = 0;
> @r = ();
> $sep = "\x001C";
>
>
> while () {
> ($r_num, $r_data) = m/([0-9]{4})(.*$)/;
>
>
> if($r[$r_num]) { $fs = $sep; } else { $fs = ''; }
> $r[$r_num] = $r[$r_num] . $fs . $r_data;
>
> }
>
>
> $r_size = @r;
>
>
> for( $i=0; $i if(length($r[$i]) printf("%04d%s%s",$i,$r[$i],"\n");
>
>
> } else {
> @fields = split(/$sep/,$r[$i]);
> $f_size = @fields;
>
>
> printf("%04d%s", $i);
> $temp_length = 0;
> $tape = 0;
>
>
> for( $j=0; $j if($temp_length + length($fields[$j])