РЕДАКТИРОВАТЬ2: Так как OP изменил образцы и добавил полные условия теперь, поэтому добавление этого решения.
awk 'FNR==NR{a[$2]=$1;b[$2]=$3;next} {for(i in a){if(index($0,i)){print a[i],$0,b[i];delete a[i];break}}}' Input_file1 Input_file2
ИЛИ добавление не-однотипной формы решения.
awk '
FNR==NR{
a[$2]=$1
b[$2]=$3
next
}
{
for(i in a){
if(index($0,i)){
print a[i],$0,b[i]
delete a[i]
break;
}
}
}' Input_file1 Input_file2
РЕДАКТИРОВАТЬ: В соответствии с комментарием @sjsam диапазон значений для substr
может отличаться, тогда как в случае выборок можно также попробовать выполнить следующее. Он считает, что вы хотите иметь только алфавиты в качестве индекса и удалить все из строки Input_file2 (что OP также подтверждено в комментариях).
awk 'FNR==NR{val=$0;gsub(/[^[a-zA-Z]]*/,"");a[$0]=val;next} {$2=$2 in a?a[$2]:$2} 1' Input_file2 Input_file1
Не могли бы вы попробовать следующее.
awk 'FNR==NR{a[substr($0,3,3)]=$0;next} {$2=$2 in a?a[$2]:$2} 1' Input_file2 Input_file1
Вывод будет следующим.
111 33aaa8 777
333 56ccc9 666