如何使用Perl编写脚本将一个表转换为另一个表?

时间:2017-04-16 16:07:39

标签: perl

我正在尝试编写一个Perl脚本,将表1转换为表2:

表1

1   rs2905037-G-A   0   775426
1   rs6701114-C-T   0   1022037
2   SNP1-G-T    0   2
10  rs7918734-C-A   0   192533
10  rs1476129-A-C   0   265520
10  rs1476130-T-A   0   274675
10  rs17221239-C-G  0   285113
23  rs17537524-C-A  0   816304
23  rs17461767-G-A  0   2335503
24  SNP2-T-C    0   48

表2

chr1    dbSNP   SNV 775426  775426  20  +   0   rs2905037-G-A
chr1    dbSNP   SNV 1022037 1022037 20  +   0   rs6701114-C-T
chr2    dbSNP   SNV 2   2   20  +   0   SNP1-G-T
chr10   dbSNP   SNV 192533  192533  20  +   0   rs7918734-C-A
chr10   dbSNP   SNV 265520  265520  20  +   0   rs1476129-A-C
chr10   dbSNP   SNV 274675  274675  20  +   0   rs1476130-T-A
chr10   dbSNP   SNV 285113  285113  20  +   0   rs17221239-C-G
chrX    dbSNP   SNV 816304  816304  20  +   0   rs17537524-C-A
chrX    dbSNP   SNV 2335503 2335503 20  +   0   rs17461767-G-A
chrY    dbSNP   SNV 48  48  20  +   0   SNP2-T-C

我试过使用下面的代码....但是......它只是将两个表放在一个新的文本文件中。我想将表1中的格式转换为表2中的格式。

@docList = glob ('*');
open(OUTPUT, ">combined.txt");
foreach $filename(@docList) {
    open(INPUT, $filename);
    print OUTPUT <INPUT>;
    close(INPUT);
}
close(OUTPUT);

我需要一个Perl脚本将表1转换为表2?

谢谢!

1 个答案:

答案 0 :(得分:0)

while (<$INPUT>) {
   chomp;
   my @f = split /\t/;
   say $OUTPUT join "\t",
      "chr".$f[0],
      "dbSNP",
      "SNV",
      $f[3],
      $f[3],
      "20",
      "+",
      $f[2],
      $f[1];
}