ESQUERDA (EXTERIOR) JOIN [duplicata]

2

Meus arquivos:

file1.txt
 =========
 key1
 key1
 key1
 key1   
 key2
 key2   
 key3
 key3
 key3
 key4
 key4   

 file2.txt
 =========
 key1   22
 key2   23
 key3   24


 Expected Output :
 ==================
 key1   22
 key1   22
 key1   22
 key1   22    
 key2   23
 key2   23   
 key3   24
 key3   24
 key3   24

Todas as soluções que encontrei não duplicam correspondências.

awk '{a[$1]=a[$1]" "$2} END{for(i in a)print i, a[i]}'
join -a 1

O que precisa ser modificado nessa abordagem para resultar em uma junção externa esquerda?

    
por Korolenko S 01.03.2018 / 22:43

1 resposta

2

Awk solução:

awk 'NR==FNR{ a[$1]=$2; next }$1 in a{ $2=a[$1]; print }' file2.txt file1.txt

A saída:

key1 22
key1 22
key1 22
key1 22
key2 23
key2 23
key3 24
key3 24
key3 24

Ou simplesmente com o comando join :

join -o1.1,2.2 file1.txt file2.txt
    
por 01.03.2018 / 22:47