- 论坛徽章:
- 0
|
如果有一行只有两个字段,并且缺少的是第一个字段,就是哪里人的话,可以这样:
awk 'NR>1{if(NF==2){$3=$2;$2=$1;$1="NULL";}home[$1]++;now[$2]++;count[$1""$2]=$3}END{printf "\t";for(j in home){printf j"\t";}print "";for(k in now){printf k"\t";for(j in home){printf count[j""k]+0"\t";}print "";}}' file
或是将我上面写的perl改一下:
#!/usr/bin/perl
while(<>){
next if $.==1;
chomp;
($home,$now,$count)=split;
($home,$now,$count)=("NULL",$home,$now) unless $count; $home{$home}++;
$now{$now}->{$home}=$count;
}
$,="\t";
print "\t",keys %home,"\n";
for $now (keys %now){
print $now,"\t";
for $home (keys %home){
if(exists $now{$now}->{$home}){
print "$now{$now}->{$home}\t";
}else{
print "0\t"
}
}
print "\n";
}
[ 本帖最后由 dream3401 于 2009-3-20 20:20 编辑 ] |
|