编辑 vcf 文件中的 sampleID 信息

edit sampleID info in vcf file

我有一个 vcf 文件,其 header 包含样本 ID 信息。 它看起来像这样:

##fileformat=VCFv4.2 ##FILTER=<ID=PASS,Description="All filters passed"> ##fileDate=20220214 ##source=PLINKv1.90 ##contig=<ID=1,length=249212497> ##INFO=<ID=PR,Number=0,Type=Flag,Description="Provisional reference allele, may not be based on real reference genome"> ##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype"> #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT GTEX-1117F_GTEX-1117F GTEX-111CU_GTEX-111CU GTEX-111FC_GTEX-111FC GTEX-111VG_GTEX-111VG GTEX-111YS_GTEX-111YS GTEX-1122O_GTEX-1122O GTEX-1128S_GTEX-1128S GTEX-113IC_GTEX-113IC GTEX-113JC_GTEX-113JC GTEX-117XS_GTEX-117XS

我想将其编辑为仅包含

##fileformat=VCFv4.2 ##FILTER=<ID=PASS,Description="All filters passed"> ##fileDate=20220214 ##source=PLINKv1.90 ##contig=<ID=1,length=249212497> ##INFO=<ID=PR,Number=0,Type=Flag,Description="Provisional reference allele, may not be based on real reference genome"> ##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype"> #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT GTEX-1117F GTEX-111CU GTEX-111FC GTEX-111VG GTEX-111YS
GTEX-1122O GTEX-1128S GTEX-113IC GTEX-113JC GTEX-117XS

基本上我想删除 _ 之后的所有内容 例如: ID:GTEX-1117F_GTEX-1117F 所需ID:GTEX-1117F

我使用了这个命令,但它并没有真正给我想要的输出。

sed -e '$s/\[[[:digit:]]\+\]//g; s/_GTEX[[:digit:]]\+//g'chr1_impute_qc.vcf > chr1_impute_qc1.vcf

谁能帮我解决这个问题?

使用sed

$ sed 's/\(GTEX-[[:alnum:]]*\)_//g' file
ID:GTEX-1117F