我想将一个文件(file1)中列(col1)中的值与另一个文件(file2)中列(col1)中的所有记录进行比较。我的策略是读取文件,对于文件中的每一行,用制表符分隔符分割并比较两列中的值。如果匹配,则从第二个文件的列中打印特定值并将其附加到第一个文件的最后一列,否则打印“未找到”并将其附加到第一个文件的最后一列。我认为我的以下脚本是逐行比较,而不是逐行比较字段中的所有行并返回错误(使用未初始化的值 $col1[0]...)。您的帮助将不胜感激。
open (FILE1, "<", "file1") or die ("Can't open file $!");
open (FILE2, "<", "file2") or die ("Can't open file $!");
my @data1 = <FILE1>;
my @data2 = <FILE2>;
foreach my $curr_line_1 ( @data1 ) {
my @col1 = split "\t", $curr_line_1;
}
foreach my $curr_line_2 ( @data2 ) {
my @col2 = split "\t", $curr_line_2;
}
if ("$col1[0]" eq "$col2[0]") {
open FINAL, '>>', 'final';
push(@col1, "$col2[1]");
print FINAL "@col1\n";
}
else {
open FINAL, '>>', 'final';
push(@col1, "not found");
print FINAL "@col1\n";
}
close(FINAL);
close(FILE1);
close(FILE2);
file1
1 mary
1 tom
2 john
3 will
4 hugh
5 eddy
file2
2 unit2
3 unitA
5 base
final
1 mary not found
1 tom not found
2 john unit2
3 will unitA
4 hugh not found
5 eddy base