У меня простая проблема, но я не могу решать. Я хочу сравнить столбцы 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
У вас есть предложения?
Вам нужно сначала сохранить все столбцы, которые вы хотите сопоставить, с теми же столбцами во втором файле, а затем сравнить каждый для каждой строки, прочитанной из вашего первого файла:
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