我有这样的输入:
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