lista a diferença e sobreposição entre dois conjuntos de dados simples [duplicados]

7

Eu tenho dois conjuntos de dados, A e B. O formato para cada conjunto de dados é um número por linha. Por exemplo,

12345
23456
67891
2345900
12345

Alguns dos dados em A não estão incluídos no conjunto de dados B. Como listar todos esses dados em A e como listar todos esses dados compartilhados por A e B. Como posso fazer isso usando o Linux / UNIX? comandos?

    
por user288609 11.01.2012 / 17:03

2 respostas

15

Use o comando comm .

Se as listas estiverem nos arquivos listA e listB :

comm listA listB

Por padrão, comm retornará 3 colunas. Itens apenas na lista A, itens apenas na lista B e itens comuns a ambas as listas.

Você pode suprimir colunas individuais com -1 , -2 ou -3 arg.

    
por 11.01.2012 / 17:49
1

Isso lhe dará os itens exclusivos que existem em A, mas não em B:

cat A|perl -ne '$z=$_;chomp($z);$y='grep $z B';if ($y== "") {print "\n$z";}'|sort -u

Isso fornecerá a lista de itens comuns em A e B:

cat A |xargs -i grep {} B|sort -u
    
por 11.01.2012 / 18:29