Как насчет
awk -F, 'NR == FNR {l [$ 4] = $ 0; следующий} {print l [$ 1] "," $ 2 "," $ 3} 'file1 file2
1-й блок NR == FNR {l [$ 4] = $ 0; next}
активен, пока читается первый файл, и помещает всю строку в ассоциативный массив с именем l
, используя 4-е поле в качестве ключа. next
вызывает пропуск следующих инструкций для этой строки.
2-й блок {print l [$ 1] "," $ 2 "," $ 3}
активен только при чтении второго файла и использует ключ, указанный в 1-м столбце файла 2 для поиска вся сохраненная строка из файла1. Это вместе с двумя запятыми и полями $ 2 и $ 3 из файла 2 затем распечатывается.