我正在使用以下命令将具有不规则格式的文本文件解析为具有 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" '{ split($7, arr, "|"); $7 = arr[4] }1'
您可以进一步改进您的awk
命令以引入健全性检查,以确保您没有访问越界数组成员
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句