Se você não se importar em classificar os arquivos, poderá usar join
(embora possa não ser prático para o seu caso, é divertido ver como isso pode ser feito)
Primeiro, classifique File 2
no campo numérico comum
sort -k2 "File 2" > file2clean
Então você pode join
os dois arquivos
sort -k5 "File 1" | join -a 1 -o 1.1 1.2 1.3 1.4 0 2.1 -1 5 -2 2 - file2clean | tee "File 3"
Notas
-
-a 1
imprime as linhas emFile 1
que não podem ser emparelhadas (como esse arquivo tem mais linhas, suponho que você queira) -
-o 1.1 1.2 1.3 1.4 0 2.1
ordem de campo para a linha de saída - o campo ao qual nos associamos é0
e1.1
é o primeiro campo do primeiro arquivo e assim por diante -
-1 5 -2 2
une-se no quinto campo do primeiro arquivo e no segundo campo do segundo arquivo -
- file2clean
here-
representa a entrada padrão passada ao longo do pipeline, ou seja, a versão classificada deFile 1
Quando terminar, você pode excluir o intermediário file2clean
.