我是相當新的Perl的,所以希望這有一個快速的解決方案。合併基於第一列兩個文件,並返回多個值,每個鍵
我一直在試圖基於一個關鍵的兩個文件合併。問題是有多個值而不是它返回的值。有沒有辦法通過哈希循環來獲得更多的值?
例子:
文件輸入1:
12345|AA|BB|CC
23456|DD|EE|FF
文件輸入2:
12345|A|B|C
12345|D|E|F
12345|G|H|I
23456|J|K|L
23456|M|N|O
32342|P|Q|R
我把上面提到的最後一個原因是因爲第二個文件有很多值的我不想但文件1我想要所有的值。我要的結果是這樣的:
WANTED OUTPUT:
12345|AA|BB|CC|A|B|C
12345|AA|BB|CC|D|E|F
12345|AA|BB|CC|G|H|I
23456|DD|EE|FF|J|K|L
23456|DD|EE|FF|M|N|O
附件是我目前使用的代碼。它給出了一個輸出像這樣:
OUTPUT我越來越:
12345|AA|BB|CC|A|B|C
23456|DD|EE|FF|J|K|L
我迄今爲止代碼:
#use strict;
#use warnings;
open file1, "<FILE1.txt";
open file2, "<FILE2.txt";
while(<file2>){
my($line) = $_;
chomp $line;
my($key, $value1, $value2, $value3) = $line =~ /(.+)\|(.+)\|(.+)\|(.+)/;
$value4 = "$value1|$value2|$value3";
$file2Hash{$key} = $value4;
}
while(<file1>){
my ($line) = $_;
chomp $line;
my($key, $value1, $value2, $value3) = $line =~/(.+)\|(.+)\|(.+)\|(.+)/;
if (exists $file2Hash{$key}) {
print $line."|".$file2Hash{$key}."\n";
}
else {
print $line."\n";
}
}
感謝您的幫助,您可以提供,
它看起來像你完全正確的思路上來,除非你需要處理以相反的順序文件1和文件2! – hobbs