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
Это стандартное использование 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