从 VCF 文件的信息字段获取所有密钥

AML*_*AML 1 awk

这个问题与之前回答的问题相关 - Awk split by delimiter and take first entry -

对于 VCF 文件(制表符分隔格式):

chr1    28374C       T       0.0     PASS    AF=0.730769;AO=19;DP=26;
chr1    29631A       G       0.0     PASS    AF=0.6;AO=6;DP=10;ALLELEID=1396033;
chr1    39322CAC    ACC      0.0     PASS    AF=0.266667,0.266667;AO=4,4;DP=16; 
Run Code Online (Sandbox Code Playgroud)

我想得到以下输出:

AF
AO
DP
AF
AO
DP
ALLELEID
AF
AO
DP
Run Code Online (Sandbox Code Playgroud)

获取awk '{split($6,a,/;/); split(a[1],b,/=/); print b[1]}' file所有 AF 条目(如预期),但我不确定如何提取其余的键。a我如何在第二次分裂中通过整个?

Ed *_*ton 5

使用任何 POSIX awk:

$ awk -F'[[:space:]=;]+' '{for (i=6; i<NF; i+=2) print $i}' file
AF
AO
DP
AF
AO
DP
ALLELEID
AF
AO
DP
Run Code Online (Sandbox Code Playgroud)