awk 按分隔符分割并取第一个条目

awk 按分隔符分割并取第一个条目

我有这样的输入:

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;
chr1    39322CAC    ACC      0.0     PASS    AF=0.266667,0.266667;AO=4,4;DP=16; 

我想取第一个AF=[0-9]。我设法用“;”分隔该列但我不知道如何只获取第一个条目。所以我使用了 awk:

cat file | awk '{split($6,a,";"); print a[1]}' 

这使:

AF=0.730769
AF=0.6
AF=0.266667,0.266667

但我只想:

AF=0.730769
AF=0.6
AF=0.266667

答案1

awk 的函数采用正则表达式作为分隔符,因此您可以使用同时包含和 的split正则表达式:;,

awk '{split($6,a,/[;,]/); print a[1]}' file

(不需要cat|)。您还可以使用不同的分隔符拆分两次:

awk '{split($6,a,/;/); split(a[1],b,/,/); print b[1]}' file

答案2

$ awk -F'[[:space:],;]+' '{print $6}' file
AF=0.730769
AF=0.6
AF=0.266667

相关内容