Tengo una larga lista de nombres de dominio que necesito eliminar de / etc / remotedomains. Probablemente no estén en ningún orden en particular en el archivo. Cada dominio está en una línea.
¿Cómo podría recorrer la lista y encontrar esa línea en dominios remotos y eliminarla?
command-line
shell
grep
text-processing
xenoterracida
fuente
fuente
/etc/localdomains
y/etc/remotedomains
antes de hacer cosas como esta.-F
es para la coincidencia de cadena fija ("coincidencias exactas"), pero no obliga al patrón a coincidir con la línea completa. POSIX especifica la-x
bandera para limitar las coincidencias a instancias donde un patrón coincide con la línea completa.Use comm!
Desde la página del manual:
Las opciones -1, -2 y -3 deshabilitan las columnas respectivas.
Sin embargo, requiere que los archivos estén ordenados.
fuente
sed -r -i -e '/^(domain1|domain2|domain3|...|domainN)$/d' domainlist.txt
Si su lista de dominios para eliminar está en un archivo, entonces:
sed -r -i -e '/^'"$(xargs <removelist.txt|sed -e 's/ /|/g)"')$/d' domainlist.txt
Notas:
Use -i.bak para que sed haga una copia de seguridad de domainlist.txt
Si removelist.txt tiene muchos miles de entradas, podría desbordar la longitud máxima de la línea de comando. Este no es un escenario muy probable, pero es algo que debe tener en cuenta.
Si reflexionamos más, ese riesgo puede eliminarse con:
fuente