请帮忙。我是Perl和编码的新手,我有一个包含15列的大文件,还有一些缺少信息。我试图做的是选择缺少信息的列[13]和没有遗漏信息的列[4];然后使用列[4]作为键映射到列[2]并打印列[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
所有motherIDs,列[4]将有一个IndividualID,列[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行的大文件。很多人都提前感谢!