grep usando um arquivo

0

Eu tenho 2 arquivos e quero encontrar a diferença e produzir apenas o que não está dentro do ex2

Se usar grep -Ff ex2.txt ex1.txt , ele me mostrará a b c d , se eu usar o mesmo comando com -v , não haverá saída. Por que o primeiro comando também gera d ?

Qual seria a maneira mais fácil de fazer isso? O grep é adequado para isso? Talvez diff talvez um script que iria ler cada linha e saída se está lá ou não?

cat ex1.txt
a
b
c
d

cat ex2.txt
a
b
c

Editar --- minha saída aparece assim:

cat ex2.txt
a
b
c

cat ex1.txt
a
b
c
d

grep -vf ex2.txt ex1.txt

grep -f ex2.txt ex1.txt
a
b
c
d
    
por Olive.b 04.10.2016 / 11:31

3 respostas

0

Tente alterar a ordem dos arquivos:

grep -v -f ex2.txt ex1.txt
> d
    
por 04.10.2016 / 11:47
0

Não é possível reproduzir seu erro:

cat ex2.txt 
a
b
c

cat ex1.txt 
a
b
c
d

grep -vf ex2.txt ex1.txt 
d

grep -f ex2.txt ex1.txt 
a
b
c

grep -Ff ex2.txt ex1.txt 
a
b
c

grep -vFf ex2.txt ex1.txt 
d
grep -V
grep (GNU grep) 2.20

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.5 (jessie)
Release:    8.5
Codename:   jessie


Editar (no OS X com o BSD grep):

cat ex2.txt 
a
b
c

cat ex1.txt 
a
b
c
d

grep -f ex2.txt ex1.txt 
a
b
c

grep -vf ex2.txt ex1.txt 
d

grep -Ff ex2.txt ex1.txt 
a
b
c

grep -v -Ff ex2.txt ex1.txt 
d
grep -V
grep (BSD grep) 2.5.1-FreeBSD
    
por 04.10.2016 / 11:49
0

grep não é realmente a ferramenta certa para o trabalho aqui, mas uma rápida olhada no grep manpage deve ajudar (note que grep irá variar semi-wildly entre distribuições, já que alguns podem usar o GNU por padrão e outros podem usar outra coisa).

  • -F ... Sequências fixas (separadas por novas linhas) - (Categoria: seleção de correspondência)
  • -f ... Nome do arquivo (Categoria: controle de correspondência)
  • -v ... Inverter correspondência (Categoria: controle de correspondência)

Então, você pode imaginar que algo como grep -Fvf ex2.txt ex1.txt funcionaria. No entanto, esta não é uma boa solução , pois requer que você já saiba algo sobre os arquivos antes de iniciar. Existem ferramentas melhores (como variantes de diff ) para fornecer diferenças mais específicas e mais precisas entre arquivos e / ou diretórios.

Editar: seqüências de caracteres fixas, não seqüências de caracteres de incêndio (auto-corrupt ser condenado)

    
por 04.10.2016 / 11:50