Dado 2 arquivos ordenados - deletar todas as palavras encontradas em outro

0

No Linux, tenho dois arquivos de texto com palavras UTF8 russas, classificadas com sort -u (na verdade, usei :%sort u no Vim, ele produz os mesmos resultados).

Um dos arquivos dict.txt contém cerca de 700.000 palavras do meu dicionário personalizado. Outro arquivo bad-words.txt contém freqüentemente palavras digitadas incorretamente.

Gostaria de remover todas as palavras encontradas em bad-words.txt de dict.txt .

Eu sei que um script perl usando um hash poderia fazer isso, mas eu estou atrás de um forro do Unix.

Existe um comando Unix (talvez algo usando diff ?) para executar esta tarefa? E eu espero que diff não seja confundido pelo grande número de linhas - porque o programa "Beyond compare" no Windows é ...

    
por Alexander Farber 20.03.2013 / 21:51

1 resposta

3

comm fará isso.

comm -3 dict badwords

ou para classificar em tempo real:

comm -3 <(sort dict-input) <(badwords)

    
por 20.03.2013 / 22:00

Tags