У меня есть два txt-файла (с разделителями табуляции), я пытаюсь сравнить с awk. Я хочу сравнить столбец 1 файла1 с столбцом 5 файла2, и каждый раз, когда строка из файла1 столбца 1 совпадает с файлом2, столбец 5, я хочу напечатать (в конце концов, в новый текстовый файл) всю строку файла2. В файле 1 имеется около 14000 строк с одним столбцом и 40000 строк с 6 столбцами в файле2. Ниже приведены некоторые тестовые файлы, которые я использовал, чтобы попытаться выяснить, как использовать awk для получения желаемого результата.
file1
AAGAB
AAK1
AAMDC
AAMP
AAR2
AARD
AARS
file2
chr22 38035683 38052050 NM_018957 AAMDC +
chrX 47001614 47004609 NM_019056 AAMP -
chr9 21994789 22077889 NR_047539 AAR2 +
chr16 20370491 20416033 NM_174924 AARD -
chr1 210111518 210337633 NM_001146262 AARS +
chrX 30233674 30238206 NM_002364 MAGEB2 +
chrX 30261847 30270155 NM_002363 MAGEB1 +
Я попытался принять некоторые другие вопросы по awk с похожим желаемым результатом из-за обилия похожих вопросов по awk на SO:
awk -F '\t' 'NR==FNR{c[$1]++;next}c[$5]' file1 file2
Но я получаю только одно совпадение для строки AARS, хотя в тестовых файлах есть и другие совпадения:
chr1 210111518 210337633 NM_001146262 AARS +
Вывод, который я ищу:
chr14 94463615 94473898 NR_024182 AAGAB +
chr10 74033676 74035797 NM_019058 AAK1 +
chr22 38035683 38052050 NM_018957 AAMDC +
chrX 47001614 47004609 NM_019056 AAMP -
chr9 21994789 22077889 NR_047539 AAR2 +
chr16 20370491 20416033 NM_174924 AARD -
chr1 210111518 210337633 NM_001146262 AARS +
Я пытался принять пару других сообщений на стеке, но продолжаю получать один и тот же вывод только в 1 совпадении, хотя существует несколько других:
awk для сопоставления file1 с file2 и выходных совпадений
awk -F '\t' 'NR==FNR{c[$1]; next} ($5 in c)' file1 file2
Найти строки с одинаковым значением в столбце в двух файлах
awk -F '\t' 'NR==FNR{A[$1];next}$5 in A' file1 file2
Сравнение двух столбцов в двух файлах с использованием awk
awk -F '\t' 'FNR==NR {a[$1];next} {for (i in a) if ($5~i) print}' file1 file2
Может кто-нибудь помочь мне понять, где работает моя строка awk?
Я сейчас использую GNU Awk 4.2.1, API: 2.0