Verificar valores em um arquivo de texto

0

Existe uma maneira simples de verificar se existem valores na segunda coluna de um arquivo (Arquivo 2) na segunda coluna de outro arquivo (Arquivo 1), por exemplo, imprimindo uma estrela ao lado da linha em questão? Se possível usando o awk.

Arquivo 1

A   1,2,3,4 
B   15,16,17

Arquivo 2

A   3
B   18

Saída esperada: Arquivo 3

A   1,2,3,4     *
B   15,16,17         

EDITAR E se o arquivo 2 se parecesse com:

A    3,8
B    18,19

mas a saída esperada permanece a mesma?

    
por dovah 16.07.2014 / 10:19

1 resposta

2

Tente isto:

$ awk '
   FNR == NR {
       a[$1] = $2;next
   }
   {
       split(a[$1],b,",");
       for (i in b) {
           if ($2 == b[i]) {
               printf("%s %s\t*\n",$1,a[$1]);
               next;
           }
       }
       print $1,a[$1];
   }
' file1 file2 
A 1,2,3,4   *
B 15,16,17

Atualizar

Com sua nova entrada, tente:

$ awk '
    FNR == NR {
        a[$1] = $2;
        next;
    }
    {
        split($2,b,",");
        split(a[$1],c,",");
        for (i in b) {
            if (b[i] in c) {
                printf("%s %s\t*\n",$1,a[$1]);next;
            }}
                print $1, a[$1];
     }
' file1 file2
    
por 16.07.2014 / 10:31

Tags