Como juntar dois arquivos usando duas colunas no unix

0

Eu tenho um arquivo e pesquisa de arquivos e a estrutura está abaixo.

vi a.txt

empid|ename|sal_grade|MANAGER_ID
1|raj|A|202
2|MAN|B|203
3|JOS|C|204

vi lookup.txt

Grade|sal|manager_id
A|$100000|202
A|$1000|099
B|$1000000|203
B|$100|011

Output:
1|raj|A|202
2|MAN|B|203

command:

awk 'BEGIN {FS=OFS="|"} NR==FNR{a[$1];next} $3 in a{print $0}' lookup.txt a.txt >matched.txt

Aqui, nos dois arquivos, class e manager_id é comum e eu quero unir a.txt com lookup.txt em grade e manager_id e obter os dados de um.txt em que ele obteve uma correspondência de lookup.txt. com o comando abaixo, mas ele se juntará apenas na coluna, ou seja, na coluna de notas, mas eu preciso entrar na coluna de ID e de ID do gerente.

Obrigado antecipadamente.

    
por Rak kundra 27.09.2018 / 20:28

1 resposta

0

Se você precisar de uma chave combinada, crie uma chave combinada.

awk '
  BEGIN { FS=OFS="|" }
  NR==FNR { a[$1 "-" $3]; next }
  ($3 "-" $4) in a { print $0 }
' lookup.txt a.txt > matched.txt

Você pode usar "-" como um separador ou outra string ou nada. Com os dados do seu exemplo, funcionaria sem um separador.

    
por 27.09.2018 / 20:35

Tags