usando o comando awk para comparar os dois arquivos e imprimir todas as colunas, em seguida, faltando exibir como NA

1

Arquivo 1:

123, 234
345, 789
678, 900

Arquivo 2

123, abc
345, dnc

Saída desejada (todas as colunas no arquivo1 e valor ausente no arquivo dois como NA):

123,234,abc
345,789,dnc
678,900,NA
    
por user_tmo 04.11.2014 / 05:17

3 respostas

3

É mais fácil se você usar entrar :

$ join -t, -a 1 -a 2 -j 1 -e ' NA' -o auto file1 file2
123, 234, abc
345, 789, dnc
678, 900, NA
    
por 04.11.2014 / 05:37
0
awk -F ", ?" -v OFS=, 'FNR == NR { a[$1]=$2;next; };
  { if ($1 in a) print $1,$2,a[$1]; else print $1,$2,"NA"; }' file2 file1
    
por 04.11.2014 / 05:43
0

awk

awk 'BEGIN{OFS=""}NR==FNR{a[$1]=$2;};NR>FNR{if($1 in a){print $0,", ",a[$1];}else{print $0,", NA";}}' file2 file1 > tmp

a saída será armazenada em tmp, como você pediu para atualizar do arquivo3

awk 'BEGIN{OFS=""}NR==FNR{a[$1]=$2;};NR>FNR{if($1 in a){print $0,", ",a[$1];}else{print $0,", NA";}}' file3 tmp

saída:

123, 234, abc, 2014/10/20
345, 789, dnc, NA
678, 900, NA, 2013/02/30
    
por 04.11.2014 / 06:06