One-liner sem a necessidade de awk
e um arquivo temporário:
join -t '|' -j1 -o 1.1 1.2 2.4 <(sort -t'|' -k1,1 file1) <(sort -t '|' -k1,1 file2)
Usando os dois join
e awk
:
Primeiro, classifique file2
com base no primeiro campo e salve-o em file2.sort
sort -k 1 file2 > file2.sort
Agora, usando "|" como o delimitador, junte file1
e file2.sort
. Então, novamente usando "|" como o delimitador, extraia a coluna necessária usando awk
.
join -t '|' file1 file2.sort | awk -F "|" ' {print $1"|"$2"|"$6}'
A saída será:
ron@ron:~$ join -t '|' file1 file2.sort | awk -F "|" ' {print $1"|"$2"|"$6}'
111|xyz|rtms
222|abc|xyzw
333|xyz|abde
444|xyz|nnnn
555|xyz|uuyytt