大きなファイルを、ファイル内の変数ごとに 1 つの情報を含む複数のファイルに分割しようとしています。
私の入力ファイルは次のようになります。
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT PID008SM
...info here 1.....
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT CL001-SC
....info here 2....
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT CL001-SC
....info here 3....
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT PID008SM
....info here 4....
この場合、それぞれに関連する情報を含む 2 つの出力ファイル (PID008SM と CL001-SC 用に 1 つ) を作成したいと思います。
CL001-SC の出力:
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT CL001-SC
....info here 2...
....info here 3...
PID008SM の出力
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT PID008SM
....info here 1....
....info here 4....
私が使用したスクリプトは Perl ですが、どんな提案でも大歓迎です。前もって感謝します。
コード:
#!/usr/bin/perl;
use strict;
use warnings;
my $file1 = $ARGV[0] ;
my $file2 = $ARGV[1];
open (F1, $file1); #Opens first .vcf file for comparison
open (F2, $file2); #2nd for comparison
my %file;
## Create the hash key with each line of the file2
while (<F2> ) {
#chomp;
$file{$_}='';
}
## Print the line , if key exist in the hash ;
foreach my $string (<F1>) {
if ( exists $file{$_}) and ($string =~ /(#)(.+?)(#)/s) {
print $string;
}
}