如何提取不带扩展名的文件名并使用提取的名称在同一文件中更改 header?

How to extract filename without extension and change header in the same file with the extracted name?

我有大约 30 个文件名为 ID_001.new.vcf 的 VCF 文件。我只想从文件名中提取 "ID_001" 部分,并在给出 "Sample1" 的 VCF 文件的 header 行中更改它:

#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Sample1

所以结果看起来像:

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  ID_001

我该怎么做?

我尝试在 bash 中使用 echo 并从文件名中提取 ID,但我无法迭代它以在文件内部进行更改。

感谢您的帮助。

您可以使用以下内容:

for file in *.vcf 
do 
   name=$(basename -- "$file" .new.vcf) 
   sed -i "s/Sample1/$name/g" "$file" 
done