저는 Perl에 익숙하지 않으므로 빠른 해결책이 있습니다.첫 번째 열을 기준으로 두 파일을 병합하고 각 키에 대해 여러 값을 반환합니다.
저는 키를 기반으로 두 개의 파일을 결합하려고했습니다. 문제는 반환하는 값 대신 여러 값이 있다는 것입니다. 해시를 반복하여 1-10 가지 이상의 값을 얻을 수있는 방법이 있습니까?
예 :
파일 입력 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 점을 추가하는 듯 그 이유는 내가 원하지 않지만 파일 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
내가 현재 사용하고있는 코드입니다 내가 원하는 결과는 다음과 같은 것입니다. 그것은 출력과 같이 제공 : 내가 무엇입니까
출력 : 지금까지
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";
}
}
당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다,
그것은, 보인다! – hobbs