请帮忙。我对 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 行的大文件。非常感谢提前!