Help with awk or something similar

i have a file like this:

wedd01A1 1
wedd01A2 2
wedd01A3 1
wedd02A2 3
wedd02A3 4
wadd02A1 1
wadd02A2 5
wqdd01A1 3
wsdd01A3 1

i want out like this:

            A1  A2  A3
wedd01  1    2   1
wedd02  0    3   4
wadd02  1    5   0
wqdd01  3    0   0
wsdd01  0    0   1

kindly help!

Here's one way to do it with Perl -

$
$
$ cat -n f0
     1  wedd01A1 1
     2  wedd01A2 2
     3  wedd01A3 1
     4  wedd02A2 3
     5  wedd02A3 4
     6  wadd02A1 1
     7  wadd02A2 5
     8  wqdd01A1 3
     9  wsdd01A3 1
$
$ ##
$ perl -lane 'BEGIN {@h=qw(A1 A2 A3)}
>             $y{$F[0]}=$F[1]; @x=unpack("A6A2",$F[0]);
>             if ($x[0] ne $prev){push @a,$x[0]} $prev=$x[0];
>             END {
>               printf("%6s %3s %3s %3s\n","",@h);
>               foreach (@a){
>                 printf("%6s %3s %3s %3s\n",
>                         $_,
>                         defined $y{$_.$h[0]} ? $y{$_.$h[0]} : "0",
>                         defined $y{$_.$h[1]} ? $y{$_.$h[1]} : "0",
>                         defined $y{$_.$h[2]} ? $y{$_.$h[2]} : "0"
>                       )
>               }}' f0
        A1  A2  A3
wedd01   1   2   1
wedd02   0   3   4
wadd02   1   5   0
wqdd01   3   0   0
wsdd01   0   0   1
$
$

Note that I have assumed the header columns "A1", "A2", "A3" to be constant (they are hard-coded in the script).

tyler_durden

working bash script (can probably be optimized) :

#!/bin/bash
Init() { A1=0; A2=0; A3=0; }
Init
echo -e "\tA1\tA2\tA3"
while read L1 L2
do
    LIN=${L1:0:6}
    COL=${L1:6:2}
    [ -z "$COL" ] && continue
    OLD=${OLD:-$LIN}
    if [ "$LIN" != "$OLD" ]
    then
        echo -e "$OLD\t$A1\t$A2\t$A3"
        Init
        OLD=$LIN
    fi
    eval "$COL=\$L2"
done < infile

Thanks for the answers, is it possible with awk?

awk '{x=substr($1,1,6);y=substr($1,7,2);a[x FS y]=$2;b[y]=0;c[x]=0}
     END {
            {for (i in b) printf "\t%s", i}; {print ""};
            {for (i in c) { printf i;
                { for (j in b) printf "\t%s",(a[i FS j]=="")?"0":a[i FS j] }
                  print "";}
            }
     }' urfile

        A1      A2      A3
wqdd01  3       0       0
wsdd01  0       0       1
wadd02  1       5       0
wedd01  1       2       1
wedd02  0       3       4
while(<DATA>){
	chomp;
	if(/^(.*)(A[0-9]+)\s*(.*)$/){
		$hash{$1}->{$2}=$3;
	}
}
print "	A1 A2 A3\n";
foreach my $key(keys %hash){
	my $t1=($hash{$key}->{A1})?$hash{$key}->{A1}:0;
	my $t2=($hash{$key}->{A2})?$hash{$key}->{A2}:0;
	my $t3=($hash{$key}->{A3})?$hash{$key}->{A3}:0;
	print $key," ",$t1," ",$t2," ",$t3,"\n";
}
__DATA__
wedd01A1 1
wedd01A2 2
wedd01A3 1
wedd02A2 3
wedd02A3 4
wadd02A1 1
wadd02A2 5
wqdd01A1 3
wsdd01A3 1

Thanks rdcwayx , i have this error if i try to run it

awk: syntax error near line 5
awk: illegal statement near line 5

try nawk or gawk.

Thanks, nawk worked!