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
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''
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
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.