分割|的元素使用AWK分隔的列

问题描述 投票:0回答:1

我正在使用以下命令将不规则格式的文本文件解析为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

但是它不返回我想要的东西。你知道如何解决吗?

text awk delimiter
1个回答
0
投票

您只需要将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] }'
© www.soinside.com 2019 - 2024. All rights reserved.