Сравнение первых двух столбцов одного файла с первыми двумя столбцами другого файла и вывод значений из второго файла

GNU Parallel изменился за последние 7 лет. Так что сегодня он может это сделать:

Этот пример показывает, что больше блоков дается процессам 11 и 10, чем процессам 4 и 5, потому что 4 и 5 читаются медленнее:

seq 1000000 |
  parallel -j8 --tag --roundrobin --pipe --block 1k 'pv -qL {}0000 | wc' ::: 11 4 5 6 9 8 7 10
0
29.09.2020, 22:07
1 ответ

Это стандартное использование awk, синтаксический анализ двух файлов, действия для первого файла выполняются после условия FNR==NR, сохранение значений в хэш-массив, а оператор nextозначает переход к следующей строке без выполнение любых следующих действий. Для второго файла выполняется следующая часть, мы используем троицу, либо получаем сохраненное значение, если оно существует, либо устанавливаем его в «NA». 1только print. Перейдите к columnдля вкладки -, как выглядит с пробелами.

awk 'NR==FNR{a[$1]=$2; next} {$2=($1 in a)? a[$1]: "NA"} 1' fileB.txt fileA.txt \
    | column -t

Выход:

id                           freq.var
chr12_56487682_56487682_T_A  0.0035266
chr3_52436344_52436344_C_G   0.002500443
chr19_9091288_9091288_G_T    NA
chr12_44172075_44172075_A_C  0.05739626
chr19_9048431_9048431_A_G    0.033832938
chr12_56487678_56487678_T_G  NA
chr17_37881646_37881646_T_G  NA
chr19_9002576_9002576_T_C    0.0342902
chr15_63991054_63991054_T_G  0.024456501
chr17_29554589_29554589_C_T  0.095445774
1
18.03.2021, 23:01

Теги

Похожие вопросы