我正在使用以下命令将不规则格式的文本文件解析为10列的文本文件。
bcftools query -Hf 'CHC2432T\t%TYPE\t%CHROM\t%POS\t%REF\t%ALT\t%ANN[\t%DP\t%AD\t%GT]\n' test.vcf > ttest.txt
结果是一个tab-separated
文本文件,其中有10列,但第7列(命令中的ANN
)包含几个元素,它们是|像这个例子一样分开:
G|intron_variant|MODIFIER|C1orf222|ENSG00000142609|transcript|ENST00000493316|protein_coding
我想获得此|
分隔列的第4个元素,而不是上面的行(整个行)。我正在尝试使用以下命令(添加到上述命令中)在AWK中做到这一点:
bcftools query -Hf 'CHC2432T\t%TYPE\t%CHROM\t%POS\t%REF\t%ALT\t%ANN[\t%DP\t%AD\t%GT]\n' test.vcf | awk '{printf }' | awk -F "|" '{print $1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10}' > results.txt
但是它不返回我想要的东西。你知道如何解决吗?
您只需要将bcftools
的输出传递给执行此操作的单个awk
命令
bcftools query -Hf 'CHC2432T\t%TYPE\t%CHROM\t%POS\t%REF\t%ALT\t%ANN[\t%DP\t%AD\t%GT]\n' test.vcf |
awk -v FS="\t" '{ n = split($7, arr, "|"); print arr[4] }'