重複する行を削除するのではなく、2つのファイル間で見つかった一意の行を削除することに興味があります。ファイルの形式は異なります。Perl:2つのファイル間の一意の行を削除する
ファイル1:
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
は、ファイル2(タブ区切り):
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回以上)
ファイル2の2番目の列にファイル1のシーケンスを一致させたいとします。一致するものがある場合は、ファイル2の関係を維持しながら、 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;
}
}
}
を失いたくない列1の反復からそうすることが心配ですが、私はおそらく、ハッシュを使用する必要なってしまいますしてくれてありがとう手伝い!
@Sebastian Lenartowicz私は少し私の質問をクリーンアップを支援してくれてありがとう。 – Rob