指定された列のヘッダーをファイル名に置き換えます。

指定された列のヘッダーをファイル名に置き換えます。

vcfファイルがたくさんあります

HR001.vcf
HR002.vcf
HR003.vcf
HR004.vcf
HR005.vcf
HR006.vcf
HR007.vcf
HR008.vcf
.
.

内部に列10各ファイルの列ヘッダーは$ iです。各ファイルで$ iをファイルのデフォルト名に変更したいと思います。たとえば、ファイルHR001.vcfの場合は$i = HR001、HR002.vcfの場合は$i = HR002など... Unixでこれを行う簡単な方法はありますか?私はMacBook Proを所有していますが、これに精通していません。これは、実際にはタブ区切りフィールドを持つVCFファイルです。はい、スキップする必要があるファイルごとに236行があります。 #CHROM で始まる行に興味があります。つまり、237行、237行の10列に$iが含まれています。

ベストアンサー1

私は以下を使用しますperl

perl -F'\t' -i -lape '
  if ($F[0] eq "#CHROM" && $F[9] eq q($i)) {
    $F[9] = ($ARGV =~ s/\.vcf$//r);
    $_ = join "\t", @F
  }' -- *.vcf

おすすめ記事