1

请帮忙。我对 Perl 和编码非常陌生,我有一个包含 15 列的大文件,其中一些缺少信息。我正在尝试做的是选择缺少信息的列[13]和没有缺少信息的列[4];然后使用 column[4] 作为 key 映射到 column[2] 并打印 column[2] 中的所有行。

这是我的数据文件的样子(制表符分隔):

BC000   1   1   2   3   F       3   51                  51  
BC000   0   2           M                                   999
BC000   0   3   37  36  F                               65  
BC000   0   4   2   3   M                               50  50
BC000   0   5   2   3   F           45                  47  46
BC000   0   6   2   3   F       3   42                      
BC000   0   7   2   3   M                                   999
BC000   0   8   2   3   F       3                       42  
BC000   0   9   2   3   F       1                       39  
BC000   0   10  2   3   F       3                       35  
BC000   0   11  45  8   M                               11  
BC000   0   12  45  8   F                               9   

所有的motherID,column[4]都会有一个individualID,column[2](和motherID一样)

这是我的代码:

#!/usr/bin/perl
use warnings;
use strict;

my $filename = 'file.txt';

open (FILE, "<", $filename) or die "Cannot open file $!";

my @data = <FILE>;
my @column;
my $motherID;



foreach my $line (@data)
{
    @column = split ( /\t/, $line);

    if ($column[13] eq "" && $column[4] ne "" ) #missing YOB, but with mother ID
    {
        $motherID = join($column[2],$column[4]);


        if ("$motherID" eq "$column[2]")
        {
            print "$line\t\n";
        } 
    }
}

我试过了,但它没有返回任何值。你能帮忙吗?我对此真的很陌生,我正在尝试编写一个脚本以避免在 MS Excel 中手动映射列,因为它是一个超过 4000 行的大文件。非常感谢提前!

4

0 回答 0