중복 된 줄을 제거하는 대신 두 파일 사이에있는 고유 한 줄을 제거하는 데 관심이 있습니다. 파일 형식이 다릅니다.Perl : 두 파일 사이의 고유 한 줄 제거
파일 1 : 2 (탭 구분)
m160505_031746_42156_s1_p0|105337|10450_16161
m160505_031746_42156_s1_p0|104750|20537_27903
m160505_031746_42156_s1_p0|103809|17563_25308
m160505_031746_42156_s1_p0|103217|8075_11486
파일 :
acCAATCCCATCACCATCtt m160505_031746_42156_s1_p0|105337|10450_16161
atTAAAATACCATTATATgg m160505_031746_42156_s1_p0|104750|20537_27903
caAACTCCAACTACGAACtg m160505_031746_42156_s1_p0|103809|17563_25308
atCTATTTAAACCTAATCgg m160505_031746_42156_s1_p0|103217|8075_11486
acCAATCCCATCACCATCtt m160505_031746_42156_s1_p0|152092|36592_40830
atTAAAATACCATTATATgg m160505_031746_42156_s1_p0|143825|13009_23809
caAACTCCAACTACGAACtg m160505_031746_42156_s1_p0|143710|0_20191
atCTATTTAAACCTAATCgg m160505_031746_42156_s1_p0|140833|25358_34709
파일 2 열 (1) 20 개 문자 앞에 2 열의 파일 1과 동일 라인을 가지고 열 1의 20 자의 문자 패턴이 파일 2에서 반복되며 (여러 번, 두 번 이상), 각각의 고유 한 연관된 시퀀스가 있습니다.
파일 2의 두 번째 열과 파일 1의 순서를 일치시키고 싶습니다. 일치하는 것이 있으면 파일 2와의 관계를 유지하면서 각 일치에 대해 두 개의 열이있는 새 파일을 생성하고 싶습니다 두 열 사이. 실제로 File 2에서 열 2 일치 항목이없는 행 2 개를 제거하기 만하면됩니다.
내 코드가 도움이 필요하다는 것을 알고 있지만 여기에 더 많은 정보를 제공합니다. 내가 어떻게 생각하고 있는지. 나는 때문에 열 1의 반복으로 그렇게 걱정입니다 내가 2.
use strict;
use warnings;
open(OUT, '>', '/path/to/out.txt') or die $!;
open(FMT0, '<', '/path/to/fmt0.txt') or die $!;
my $regex = qr/m160505_.*/;
while(my $line = <FMT0>){
$line =~ $regex;
open(FMT6, '<', '/path/to/fmt6.txt') or die $!;
while(my $zero_fmt = <FMT6>){
if ($zero_fmt =~ /([A-Z]{20})\t($line)/i){
print OUT $zero_fmt;
}
}
}
감사 컬럼에 그와의 관계를 잃고 싶지 않지만 나는 아마 해시를 사용할 필요 끝날 것 도움!
@Sebastian Lenartowicz 감사 . – Rob