指定したディレクトリ内の各ファイルのFOCUS * .tsvファイルに関連する一意の1行ヘッダーを追加したいとします。その後、これらのファイルをすべて1つのファイルに結合したいと考えています。ディレクトリ内の特定のファイルにカスタムヘッダーを追加する
最初に私はsed
コマンドを試しました。
`my $cmd9 = `sed -i '1i$SampleID[4]' $tsv_file`;` print $cmd9;
それが働いたように見えたが、私は、コードの次のセクションで一つのファイルにこれらのファイルのすべてを組み合わせるした後、挿入された行は、各ファイルの4倍に上場しました。
私はこれを達成するために以下のPerlスクリプトを試しましたが、ファイルの内容を削除して、追加されたヘッダーのみを表示します。
私が探しているものを達成する最も簡単な方法を探しています。 これは私が試みたものです。
#!perl
use strict;
use warnings;
use Tie::File;
my $home="/data/";
my $tsv_directory = $home."test_all_runs/".$ARGV[0];
my $tsvfiles = $home."test_all_runs/".$ARGV[0]."/tsv_files.txt";
my @run_directory =(); @run_directory = split /\//, $tsv_directory; print "The run directory is #############".$run_directory[3]."\n";
my $cmd = `ls $tsv_directory/FOCUS*\.tsv > $tsvfiles`; #print "$cmd";
my $cmda = "ls $tsv_directory/FOCUS*\.tsv > $tsvfiles"; #print "$cmda";
my @tsvfiles =();
#this code opens the vcf_files.txt file and passes each line into an array for indidivudal manipulation
open(TXT2, "$tsvfiles");
while (<TXT2>){
push (@tsvfiles, $_);
}
close(TXT2);
foreach (@tsvfiles){
chop($_);
}
#this loop works fine
for my $tsv_file (@tsvfiles){
open my $in, '>', $tsv_file or die "Can't write new file: $!";
open my $out, '>', "$tsv_file.new" or die "Can't write new file: $!";
$tsv_file =~ m|([^/]+)-oncomine.tsv$| or die "Can't extract Sample ID";
my $sample_id = $1;
#print "The sample ID is ############## $sample_id\n";
my $headerline = $run_directory[3]."/".$sample_id;
print $out $headerline;
while(<$in>) {
print $out $_;
}
close $out;
close $in;
unlink($tsv_file);
rename("$tsv_file.new", $tsv_file);
}
あなたはどうやら、間違った
'>'
が読み込むためのファイルを開く問題であり、それが解決してしまった
(1)このコードは正確に実行していますか?あなたは '>'で '$ in'ファイルをオープンします。読むためには '<'でなければなりません。さもなければ、あなたが表示するコードは本当に行の前に置かなければなりません。 (2)どのようにこれらのファイルを "_combine_"したいですか? //改善できる他のものがあります。 – zdim
'$ in、 '<'、'に変更しました。しかし、ファイルを結合したコードを実行すると、各ヘッダー行が4回出現しました。 (2)各ファイルの特定の行と列を結合します。各ファイルはまったく同じ形式なので、ファイルの配列をループして順番に追加します。ヘッダーが追加されていないとうまくいきません。ありがとう – user3781528
たとえば、CNV | intronic | synonymous | utr_3 | utr_5の行を除外し、最後のファイルに追加する前に変更する特定の列のみに関心があります。 – user3781528