Select some lines from a txt file and create a new file with awk

Hi there, I have a text file with several colums separated by "|;#" I need to search the file extracting all columns starting with the value of "1" or "2" saving in a separate file just the first 7 columns of each row maching the criteria, with replacement of the saparators in the nearly created file from "|;#" into ";".
Just for instance this is what I have :

1;Paul;10|100;20090909#2000;1000;40;20;100;80;1000;500
2;Lara;10|100;20090909#2100;2000;80;40;100;80;1000;500
1;Carlos;24|100;20090909#2200;4000;30;50;100;80;1000;500
4;Juan;12|100;20090909#2010;6000;20;20;600;80;1000;500
3;Chis;18|100;20090909#2001;8000;50;20;100;80;1000;500

What I need in a separate file is this :

1;Paul;10;100;20090909;2000;1000
2;Lara;10;100;20090909;2100;2000
1;Carlos;24;100;20090909;2200;4000

Thanks a lot in advance for your help
Nino

One way:

[house@leonov] cat test.file | grep '^[1|2]' | sed 's/\(|\|#\)/;/g' | awk -F ';' '{ print $1 ";" $2 ";" $3 ";" $4 ";" $5 ";" $6 ";" $7 }'
1;Paul;10;100;20090909;2000;1000
2;Lara;10;100;20090909;2100;2000
1;Carlos;24;100;20090909;2200;4000

Another approach:

awk -F"[;|#]" '/^1/||/^2/{$7=$7"#";sub("#.*","");print}' OFS=";" file

Regards

or this....

awk  'BEGIN {FS="[;|#]"} /^1/ || /^2/{print $1";"$2";"$3";"$4";"$5";"$6}' file

Or:

awk -F'[|;#]' '/^[12]/ {
  for (c=1; c<=max; c++) 
    printf "%s", $c (c == max ? RS : OFS)
  }' OFS=\; max=7 infile 

With Perl:

perl -F'[|;#]' -lane'
  /^[12]/ and print join ";", @F[0..6]
  ' infile

With GNU awk:

awk -F'[|;#]' '/^[12]/&&NF=7' OFS=\; infile