Como remover todas as linhas de um arquivo que contém uma string de outro arquivo

1

Eu quero remover todas as linhas de um arquivo que contém uma string de outro arquivo. Então eu não quero remover as linhas que são idênticas, não há nenhuma, mas remover todas as linhas se elas compartilharem uma string de outro arquivo. E escreva as linhas que não continham uma string do outro arquivo para um novo arquivo. Exemplo:

Arquivo A:

bird, snake
dog, cat
rabbit,fox
eagle,dove

Arquivo B:

dog
dove

Arquivo RESULT:

bird,snake
rabbit,fox

Por favor ajude.

Muito obrigado.

    
por Rick 13.04.2015 / 22:14

1 resposta

6

Use a seguinte expressão grep :

grep -vFf file_B file_A

Aqui está um teste:

$ cat file_A 
bird, snake
dog, cat
rabbit,fox
eagle,dove

$ cat file_B 
dog
dove

$ grep -vFf file_B file_A 
bird, snake
rabbit,fox
  • -f lerá os padrões de um arquivo (um por linha), file_B neste caso
  • -F considerará os padrões lidos de file_B como string fixa, o que significa que nenhuma outra operação de padrão será feita nos padrões
  • -v imprimirá as linhas não correspondentes, isto é, as linhas de file_A que não contêm os petterns de file_B .
por heemayl 13.04.2015 / 22:18