我是编程新手,需要很多帮助。我有两个文件:
第一个报告带有一些 ID 的列(实际上是一个列表),如下所示:
ID_3
ID_6
ID_5-2
ID_38
第二个文件报告了一个包含几列的表,如下所示:
name1 ID_1 ID_1-2
name2 ID_2 ID_2-2
name3 ID_3 ID_3-2 ID_3-3
name4 ID_4
name5 ID_5 ID_5-2
name6 ID_6
我的目标是将第一个文件中的每个 ID 与第二个文件中报告的 ID 进行比较。如果匹配,我想打印相应的名称(例如,对于文件 1 中的 *ID_3*,我想在输出中打印name3),如果没有匹配,我想从文件 1 打印不匹配的 ID qith “未找到”。例如对于 *ID_38*(在文件 2 中没有匹配项),我想打印 *ID_38 not-found*。
我编写了一个 perl 脚本,它能够正确编写与匹配 ID 对应的名称,但它不能以一种好的方式编写不匹配的 ID。代码如下所示:
$file_table = "file_2.txt";
$file_list = "file1.txt";
open (HAN, "< $file_table") || die "Impossible open the table";
@r = <HAN>;
close (HAN);
open (PEW, "< $file_list") || die "Impossible open the list";
@l = <PEW>;
close (PEW);
for ($p=0; $p<=$#l; $p++) {
chomp ($l[$p]);
for ($i=0; $i<=$#r; $i++) {
chomp ($r[$i]);
@v = split (/ /, $r[$i]);
for ($j=0; $j<=$#v; $j++) {
chomp ($v[$j]);
if ($l[$p] eq $v[$j]) {
print "$v[0]\n";
} else {
print "$l[$p] not-found\n";
}
}
}
}
我弄错了,输出中有太多“未找到”的行,我不知道如何解决。我想要这样的输出:
name3
name6
name5
ID_38