Inicialmente estoy produciendo dos archivos que contienen listas de URL: me referiré a ellos como old
y new
. Me gustaría comparar los dos archivos y si hay URL en el new
archivo que no están en el old
archivo, me gustaría que se muestren en un extra_urls
archivo.
Ahora, he leído algunas cosas sobre el uso del diff
comando, pero por lo que puedo decir, esto también analiza el orden de la información. No quiero que la orden tenga ningún efecto en la salida. Solo quiero que las URL adicionales se new
impriman en el extra_urls
archivo, sin importar el orden en que se coloquen en cualquiera de los otros dos archivos.
¿Cómo puedo hacer esto?
fuente
diff
hará lo mismo, ¿verdad?diff
Mostrará todas las diferencias.comm
le permite seleccionar si desea ver las líneas del archivo 1, el archivo 2 o las que tienen en común.bash
se está ejecutando? Es posible que no admita la sustitución del proceso.Yo solo usaría
grep
:Explicación
-f
: le dicegrep
que lea sus patrones de búsqueda de un archivo. En este casoold
,.-v
: le dice a grep que invierta la coincidencia, que solo imprima líneas no coincidentes.-F
: le dice a grep que interprete sus patrones de búsqueda como cadenas, no como expresiones regulares. De esa manera, la.
URL se combinará literalmente.Combinados, estos hacen
grep
imprimir cualquier líneanew
que no estaba enold
. El orden de las URL en el archivo es irrelevante.fuente
-F
patrones de texto sin formatoComo el orden es importante para usted, use
awk
fuente
> extra
a| sort > extra
. o| sort -u > extra
si solo desea que aparezca una nueva url en la salida una vez, independientemente de cuántas veces esté en la entrada. El orden de entrada puede afectar el orden de salida a menos que haga un trabajo adicional en algún lugar del camino para evitarlo.comm
es la mejor respuesta para esta pregunta, aunque tambiéngrep -Fvf
es buenaTengo una aplicación llamada meld. Permite ver los dos (o tres) archivos, uno al lado del otro, muestra las diferencias y permite la copia selectiva de uno a otro o la eliminación de caracteres.
Meld se puede instalar desde un terminal con
fuente