次の形式のタブ区切り vcf ファイルがあります。
#CHROM POS REF ALT INFO
chr1 111 A TT;C AC=0;AN=33
chr1 111 A G;t AC=0;AN=100
chr1 111 G A AC=110;AN=51
chr2 737 T Q AC=99;AN=10003
chr2 888 G G AC=100;AN=1636
AC付きの新しいテキストファイルに行を抽出したいです。情報列が 100 より大きいため、予想される出力は次のようになります。
#CHROM POS REF ALT INFO
chr1 111 G A AC=110;AN=51
これまで持っているawkコマンドは次のとおりです。
awk 'NR==1 || /AC=[0-9][0-9][0-9]+/ && !/AC=100/' file.vcf > output.txt
しかし、ファイルがカーソルで完了するのに時間がかかります。抽出する方法はありますか? $ 5のAC(つまり、情報列)が100より大きくなければならないことを指定します。洞察力を高く評価いたします。
ベストアンサー1
$ awk -F'[\t=]' 'NR==1 || ($6+0)>100' file
#CHROM POS REF ALT INFO
chr1 111 G A AC=110;AN=51
または必要に応じて:
$ awk '{split($NF,p,/[=;]/)} NR==1 || p[2]>100' file
#CHROM POS REF ALT INFO
chr1 111 G A AC=110;AN=51