AWK для сравнения столбцов в файле1 и файле2

У меня простая проблема, но я не могу решать. Я хочу сравнить столбцы 2, 3, 4, 5 и 6 из File1 с теми же столбцами File2 , и если они совпадают, добавьте Column1 из ] File2 to Column7 of File1 .

Я пробовал решения на основе awk NR == FNR из ранее опубликованных аналогичных проблем, но не удалось принять, чтобы получить правильный вывод.

Файл1 :

Column1 Column2 Column3 Column4 Column5 Column6
Genome1 1       1       2       1       2
Genome2 1       1       2       1       2
Genome3 1       2       2       1       2

Файл2 :

Column1 Column2 Column3 Column4 Column5 Column6
Profile1 1       1       2       1       2
Profile2 1       2       2       1       2
Profile3 1       3       2       1       2

Ожидаемые результаты:

File1
Column1 Column2 Column3 Column4 Column5 Column6 Column7
Genome1 1       1       2       1       2       Profile1
Genome2 1       1       2       1       2       Profile1
Genome3 1       2       2       1       2       Profile2

У вас есть предложения?

0
задан 8 December 2020 в 17:48

1 ответ

Вам нужно сначала сохранить все столбцы, которые вы хотите сопоставить, с теми же столбцами во втором файле, а затем сравнить каждый для каждой строки, прочитанной из вашего первого файла:

awk 'NR==FNR {
    if(NR==1) $1="Column7"; file2[$2, $3, $4, $5, $6]=$1; next; };
    (($2, $3, $4, $5, $6) in file2){ print $0, file2[$2, $3, $4, $5, $6];
}' OFS='\t' file2 file1

Column1 Column2 Column3 Column4 Column5 Column6 Column7
Genome1 1       1       2       1       2       Profile1
Genome2 1       1       2       1       2       Profile1
Genome3 1       2       2       1       2       Profile2
2
ответ дан 8 December 2020 в 14:47

Другие вопросы по тегам:

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