oposto de join -v?

2

Eu tenho que fazer exatamente o oposto de join -v1 fileA fileB , que diz: linhas de impressão do arquivo A cujos primeiros campos não correspondem ao primeiro campo de qualquer linha do arquivo B. Em vez disso, quero escrever as linhas do arquivo A que fazer coincidirem (em seus primeiros campos) com linhas do arquivo B.

Eu tentei criar join -o 1.1 2.1 fileA fileB , mas isso duplica as linhas que coincidem, e não escreve a linha do primeiro arquivo, se for o mesmo.

Qual é a maneira mais fácil?

    
por cloudy_fog 04.08.2016 / 15:17

2 respostas

0

Como Satō Katsura comentou , você poderia "enganar" a participação em ver somente campo 1 do arquivo B, então peça para fazer uma junção normal; isto imprime a linha do arquivo A e o (vazio) restante da linha no (o enganado) arquivo B:

join fileA <(awk '{print $1}' fileB)

Dados arquivos de entrada de:

$ cat fileA
1 blah
2 foo
3 bar

$ cat fileB
3 barely
4 baz
5 qux

A saída resultante é:

$ join fileA <(awk '{print $1}' fileB)
3 bar
    
por 12.04.2018 / 02:47
-1

Se os dois arquivos estiverem classificados, você poderá usar comm desta forma para exibir as linhas de fileA que não estão em fileB :

comm -23 fileA fileB

Ou você também quer as linhas em fileB que não estão em fileA ?

    
por 04.08.2016 / 16:52