Eu tenho um arquivo com uma lista de emails e cada linha contém um email. Quero remover as linhas que contêm a string example.com ou test.com. 
Tentei isso:
sed -i "s/example\.com//ig" file.txt 
 Mas removerá apenas a string example.com, como posso remover a linha inteira? 
Resposta
Com GNU sed:
sed "/example\.com/d;/test\.com/d" -i file.txt 
 irá remover as linhas com example.com e test.com. 
 De man sed: 
d Delete pattern space. Start next cycle. 
Comentários
Resposta
 POSIXly, você pode usar grep: 
grep -Eiv "(example|test)\.com" <in >out 
Comentários
-  Tenha cuidado para não usar o mesmo arquivo para entrada e saída , ou será truncado antes de 
greplê-lo. 
Resposta
 Sua regex corresponde apenas a example.com e sed substitui apenas example.com s por vazio fragmento. Seu regex deve corresponder a qualquer linha que contenha example.com ou test.com 
sed -i "s@.*\(test\|example\)\.com.*@@i" file.txt 
Comentários
-  Seu a resposta não exclui linhas correspondentes; só os deixa em branco. – Também não lida com texto que não diferencia maiúsculas de minúsculas (conforme o exemplo do OP ' s). -. O 
gé redundante / sem sentido, porquesed ' s regex é ganancioso e, portanto, o.*à esquerda e à direita fará com que a primeira ocorrência de uma correspondência de texto corresponda a toda a linha.  -  Obrigado pelo feedback. Eu não ' prestei atenção à distinção entre maiúsculas e minúsculas. 
gé meu hábito, você tem razão, não é necessário. Também pensei que a linha cega era o que a OP queria. Agora está tudo claro. Obrigado 
example(outest) seguido por qualquer caractere entãocom. Exemploecho 'exampleAcom' | sed '/example.com/d'