awk -F',' '{
if (FNR==NR){
a[$1"@"$3]=$4","$5","$2
}
else if ($1"@"$3 in a){
print $1","$3","a[$1"@"$3]" ~ "$2","$3","$4","$5
}
}' file1 file2
При обработке первого файла(FNR==NR
означает, что входной номер записи текущего файла равен общему количеству записей, т.е. обрабатывается первый файл ), сохранить строку, содержащую четвертое, пятое и второе поле в массиве a
с первым и третьим полем в сочетании с @
в качестве индекса.
Когда обрабатывается второй файл(else if
)и в массиве существует комбинированный ключ первого и третьего полей вашей текущей строки, напечатайте первое и третье поля, сохраненное значение массива, тильду и поля 2 -5 из текущая строка.
Ваш вопрос выглядит как "домашнее задание", и я настоятельно рекомендую вам попробовать его самостоятельно, если вы хотите понять, awk
как работают массивы.