Procure outro arquivo e adicione um valor a determinado campo

0

Arquivo A:

Castro  2
Manuel  5
Daniela 8
...

Arquivo B:

Tom//UK  No
Mark//UK No
Castro//Chile Yes
...
Manuel//Spain No

Saída:

Castro 2 Yes
Manuel 5 No
...

Enumere cada nome no Arquivo A e procure-o no Arquivo B, e obtenha o segundo campo para adicionar ao campo 3 do Arquivo A.

O que eu estava tentando:

cat File_A.txt | awk -F '\t' '{ print $1 }; $3='grep -i $2 File_B.txt | head -1 | cut -f2''

    
por Luca 05.06.2018 / 16:42

2 respostas

1

Awk solução:

awk 'NR == FNR{ names[$1] = $2; next }
     { name = substr($1, 1, index($1, "/") - 1) }
     name in names { print name, names[name], $NF }' file1 file2

A saída:

Castro 2 Yes
Manuel 5 No
    
por 05.06.2018 / 16:54
0

Outra solução awk :

awk -F'//| ' 'NR==FNR{a[$1]=$3;next}NR>FNR{print $0,a[$1]}' fileB fileA

Observe que, se o arquivo B não contiver um nome presente no arquivo A, a linha será impressa.

    
por 05.06.2018 / 17:01

Tags