Разделение элементов столбца, разделенного трубами, из вывода команды, разделенного табуляцией - PullRequest
0 голосов
/ 27 сентября 2019

Я анализирую текстовый файл с неправильным форматом в текстовый файл с 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

, но она не возвращает то, что я хочу получить.ты знаешь как это исправить?

1 Ответ

1 голос
/ 27 сентября 2019

Вам просто нужно направить вывод вашей 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, чтобы ввести проверку работоспособности, чтобы гарантироватьвы не обращаетесь к члену массива вне привязки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...