Linux: Eliminar de un fichero las líneas que hay en otro

Imagina que tienes una lista de elementos, direcciones, dominios, etc. en un fichero de texto, un ítem por línea, y tienes otro fichero que contiene ítems que debes eliminar del primer fichero, ¿cómo lo haces desde línea de comandos o desde un script bash?

Ejemplo

fichero1.txt
direccion1@dominio.com
direccion2@dominio.es
direccion3@dominio.net
direccion4@dominio.org
direccion5@dominio.eu

fichero2.txt
direccion3@dominio.net
direccion5@dominio.eu

Con la siguiente instrucción:
grep -v -x -f fichero2.txt fichero1.txt > fichero1.txt

Obtendríamos
direccion1@dominio.com
direccion2@dominio.es
direccion4@dominio.org

La explicación es:

  • -v selecciona las líneas que no coinciden
  • -x indica comparar líneas completas
  • -f carga los patrones a comparar del fichero que se le indica