Comparação de arquivos no Linux

0

Poderia, por favor, me ajudar com o requisito abaixo?

Eu tenho dois arquivos FILE1 e FILE2 com o conteúdo abaixo (exemplo):

ARQUIVO1:

Column1       Column2
------------------------
M             1.2
A             11
S             hostname
T             TCP
E             120
R             Y

ARQUIVO2:

Column1        Column2
---------------------------
A             12
M             1.3
T             SSL
S             hostname1

A ordem dos campos FILE1 e FILE2 é diferente, quero comparar FILE1 e FILE2, pegar a primeira coluna de FILE1 e pesquisar toda a coluna1 de FILE2 e, assim que encontrar a correspondência, ela terá que escolher o valor column2 (de FILE2 ) e substitua o valor no campo correspondente em FILE1.

Aprecie se alguém puder ajudar a minha solicitação.

    
por Ram 11.01.2017 / 18:55

1 resposta

1

Você pode fazer algo como:

$ join -o 0,1.2,2.2 -a 1 <(sort -k 1,1 FILE1) <(sort -k 1,1 FILE2) |
     awk '{print $1, $NF}'
A 12
E 120
M 1.3
R Y
S hostname1
T SSL

Ou para preservar a ordem das linhas em FILE1 :

$ awk '!n {a[$1] = $2; next}
   {print $1, $1 in a ? a[$1] : $2}' FILE2 n=1 FILE1
M 1.3
A 12
S hostname1
T SSL
E 120
R Y
    
por 11.01.2017 / 19:29