supprimer les lignes qui contiennent un text spécifique dans un file

J'ai un file avec une list d'e-mails et chaque ligne contient un e-mail. Je veux supprimer les lignes qui contiennent la string example.com ou test.com .

J'ai essayé ceci:

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

Mais cela ne supprimera que la string example.com , comment puis-je supprimer toute la ligne?

Avec GNU sed:

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

supprimera les lignes avec example.com et test.com .

De man sed :

 d Delete pattern space. Start next cycle. 

POSIXly, vous pouvez utiliser grep :

 grep -Eiv '(example|test)\.com' <in >out 

Votre regex correspond uniquement à example.com et sed remplace uniquement example.com par une string vide. Votre regex doit correspondre à n'importe quelle ligne contenant example.com ou test.com

 sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt