grep para arquivar para excluir conteúdo

0

eu tenho este comando:

grep -Pvi ".(\.var|\.foo|\.varfoo)$" myfile.txt > newfile.txt

nota: .var, .foo e .varfoo (e muitos outros) são linhas que estão em myfile.txt.

myfile.txt:

.var
.foo
.varfoo
.xxx.var
.yyy.foo
.zzz.varfoo

O comando funciona bem e faz o que tem que fazer (elimine qualquer linha que termine com .var, .foo, .varfoo, mas mantenha as 3). Depois de executar o comando:

newfile.txt

.var
.foo
.varfoo

Agora, eu preciso colocar .var, .foo, .varfoo, em um "greplist.txt", para evitar colocá-los dentro do comando, para que "grep" o leia:

greplist.txt

.var
.foo
.varfoo

como eu faço isso?

    
por ajcg 22.04.2018 / 18:02

1 resposta

2

Dois desafios aqui:

  • -P suporta apenas um único padrão
  • cada linha no seu arquivo deve ser um padrão completo, não apenas o próprio texto

Então, se você definir greplist.txt para

.\.var$
.\.foo$
.\.varfoo$

e apenas execute

grep -vi -f greplist.txt myfile.txt > newfile.txt

você deve conseguir o que está procurando.

    
por 22.04.2018 / 18:16

Tags