Eliminar líneas con diferentes patrones en un file

Necesito borrar líneas con diferentes patrones,

Por ejemplo

sed '/Paris/d' file.txt | cat -s sed '/London/d' file.txt | cat -s sed '/Rome/d' file.txt | cat -s sed '/Pais/d' file.txt | cat -s 

¿Cómo hacerlo usando una matriz de nombre de ciudades y solo escribe una vez el command sed?

Solutions Collecting From Web of "Eliminar líneas con diferentes patrones en un file"

Puedes usar sed de la siguiente manera:

 sed '/paris\|london\|rome\|pais/Id' cities 

El I indica que no coincide con el caso. La d significa eliminar todas las líneas coincidentes en el espacio del patrón.

usando awk:

 awk '{if(match(tolower($0),/(paris|london|rome)/)==0) print $0}' file > file 

tolower convertirá línea completa a minúscula
match devuelve la position inicial de la subcadena si corresponde 0

awk imprimirá solo la línea que no contiene París, Londres, Roma y la saveá en el mismo file