remove linhas que contêm um texto específico em um arquivo

3

Eu tenho um arquivo com uma lista de e-mails e cada linha tem um e-mail. Desejo remover linhas que contenham a string example.com ou test.com .

Eu tentei isso:

sed -i 's/example\.com//ig' file.txt 

Mas removerá apenas a string example.com , como posso remover a linha inteira?

    
por k961 21.08.2015 / 19:41

3 respostas

7

Com o GNU sed:

sed '/example\.com/d;/test\.com/d' -i file.txt

removerá as linhas com example.com e test.com .

De man sed :

d      Delete pattern space.  Start next cycle.
    
por 21.08.2015 / 19:45
3

POSIXly, você pode usar grep :

grep -Eiv '(example|test)\.com' <in >out
    
por 21.08.2015 / 19:56
0

Seu regex corresponde apenas a example.com e sed substitui apenas example.com s por string vazia. Seu regex deve corresponder a qualquer linha que contenha example.com ou test.com

sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt
    
por 21.08.2015 / 20:23