簡體   English   中英

使用awk從vcf文件中提取信息

[英]Using awk to extract information from vcf file

我有一個包含數百萬行的文件,如下所示:

chr1    18217866        .       T       A       52.2409 .       AB=0;ABP=0;AC=2;AF=0;AN=2;AO=2;CIGAR=1X;DP=2;DPB=2;DPRA=0;EPP=7.35324;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=7.37776;PAIRED=0;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=74;QR=0;RO=0;RPP=7.35324;RPPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=0;SRP=0;SRR=0;TYPE=snp      GT:DP:RO:QR:AO:QA:GL    1/1:2:0:0:2:74:-7.03,-0.60206,0

我試圖在AF=0的第二列中找到與給定數字匹配的所有行,如下所示:

grep '1821786*' file.vcf | cut -f 8 | awk -F \; '$4 == 0 {print $4}' | wc -l

這個問題是:

grep '1821786*' file.vcf | cut -f 8 |

打印: AF=0 ,這與awk語句中$4 == 0的比較不匹配。

有沒有辦法剝離AF=以便awk語句在第4列中匹配0

它可以在單個awk中完成,並且具有更高的准確性

awk -F '[;[:blank:]]+' '$2 ~ /^1821786/ && $11 == "AF=0"{++n} END{print n}' file.vcf

-F '[;[:blank:]]+'將輸入字段分隔符設置為分號或空格/制表符。

實際上看起來awk有一個替換函數在這里很有用:

grep '1821786*' file.vcf | cut -f 8 | awk -F \; '{sub(/AF=/,"")} $4 ==0 {print $4}' | wc -l

然后,可以根據需要將其用於vcf文件中的任何其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM