2010-04-23 10 views
5

He hecho algunas búsquedas para esto pero no puedo encontrar lo que busco específicamente.Shell Script - Comparación de líneas de texto, eliminación de coincidencias

Tengo dos archivos: "a.txt", "b.txt".

Cada uno contiene una lista de direcciones de correo electrónico, separadas por líneas nuevas.

Para todas las líneas en "a.txt", necesito buscar una coincidencia en cualquier lugar de "b.txt". Si es así, la dirección de correo electrónico en "a.txt" debe eliminarse.

(Como alternativa, un nuevo archivo "c.txt" pudo ser creado con la salida si eso es más fácil.)

Estoy utilizando Mac OS X, por lo que estoy buscando un script de shell que podría ayudar, o consejos sobre cómo construir una secuencia de comandos. Gracias por cualquier ayuda.

Respuesta

3
grep -F -x -f b.txt -v a.txt > c.txt 

o, equivalentemente,

fgrep -x -f b.txt -v a.txt 
+0

Muchas gracias a todos los que ayudaron con esto. Utilicé este consejo en particular, pero aprecio enormemente la ayuda de todos. – SirRatty

2

Uso comm comando como este:

cat a.txt | sort > a2.txt 
cat b.txt | sort > b2.txt 
comm -23 a2.txt b2.txt > c.txt 
0
awk 'FNR==NR{_[$1];next}(!($1 in _))' b.txt a.txt > c.txt 
0

me gusta la respuesta grep/fgrep, pero aquí es otro gato/especie opción :

cat a.txt b.txt | sort -u > c.txt 
+0

eso no es lo que OP está buscando. – ghostdog74

+0

oops. Tienes razón; Leí la publicación completamente equivocada. Lo siento SirRatty! –

Cuestiones relacionadas