Usando a junção com espaço na chave

1

Estou tendo problemas ao mesclar dois arquivos usando o comando de união: O primeiro arquivo é um arquivo csv:

NAIN GENIEU 01/01/1900,A,B
NAIN GENIEUR 01/01/1917,C,D
NAINGENIEUR 21/01/1917,E,F

O segundo arquivo contém apenas o código interessante:

NAIN GENIEUR 01/01/1917

Eu gostaria disso como saída:

NAIN GENIEUR 01/01/1917,C,D

Ambos os arquivos são classificados com o comando bash sort . Quando eu uso join sem nenhum argumento, o padrão é espaços, então junções por PSEUDO , mas não respondem por BIRTHDAY ou nada depois de um espaço em PSEUDO . Quando eu uso o argumento -t"," , não tenho saída alguma (mesmo que deva haver)

Alguma pista sobre como resolver isso? BTW eu uso junção v.8.4

EDIT Eu tentei colocar aspas no primeiro campo (que pode conter espaços), mas isso não ajuda.

    
por naingenieu 10.06.2015 / 12:27

2 respostas

1

Seus campos não correspondem (pelo menos no exemplo) O arquivo que você está chamando de "full csv" tem o campo "PSEUDO BITHDAY", enquanto o segundo arquivo tem o campo "PSEUDO BI R THDAY" Há um R extra no segundo arquivo.

A opção -t funciona bem em todas as versões da associação.

EDITAR: Seu exemplo funciona para mim

    bash-4.1$ join -t, a b
    NAIN GENIEUR 01/01/1917,C,D
    bash-4.1$ join --version
    join (GNU coreutils) 8.4
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    Written by Mike Haertel.
    bash-4.1$
    
por 10.06.2015 / 12:44
1

Seu comando deve funcionar. No entanto, pelo menos no exemplo que você mostra, você tem um espaço no final da linha em file2 . Isso é importante, é tomado como parte do campo. Como você pode ver, removê-lo une os arquivos conforme o esperado:

$ join -t"," -j 1 file1 file2  ## no output
$ sed -i 's/ $//' file2        ## remove the trailing space
$ join -t"," -j 1 file1 file2  ## now it works
NAIN GENIEUR 01/01/1917,C,D
    
por 10.06.2015 / 13:25