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.
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?
POSIXly, você pode usar grep
:
grep -Eiv '(example|test)\.com' <in >out
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
Tags text-processing sed