6 votos

Restar el contenido de un archivo de texto de contenido de otro archivo de texto en Linux

Tengo dos archivos de texto en Linux. Contiene una lista de Identificadores válidos. E. g:

abcd
efgh
ijkl
etc.

El otro contiene una lista de Identificadores no válidos. Pero, algunos de estos también aparecen en la lista de Identificadores válidos, en este ejemplo "efgh":

mnop
qrst
efgh
etc.

¿Cómo puedo crear fácilmente un archivo de texto que contiene todas las líneas de la válida de la lista que no aparecen en la lista válida? Es decir, quiero terminar con un archivo de texto que tiene:

mnop
qrst
etc.

Me gustaría alguna línea de comandos de Linux de la magia de algunos astutos Vim engaño. Gracias de antemano!

3voto

vtest Puntos 3101

Creo comm puede ayudarle a hacer lo que quiera.

Es una herramienta de línea de comandos que deben estar presentes en la mayoría de los sistemas Linux.

0voto

sherbang Puntos 2675

Asumiendo que usted tiene archivos con el nombre valid y invalid, se puede ordenar:

especie válida > válido ordenados; tipo no válido > inválida-clasificados

luego de comparar:

diff válido ordenados-invalid-clasificados

La salida será (suponiendo que tus datos de ejemplo):

1d0
< abcd
3c2,3
< ijkl
---
> mnop
> qrst

El material con '<' es sólo en el primer archivo, el material con '>' sólo en la segunda (no válido).

Por lo tanto diff valid-sorted invalid-sorted |grep '^>' debe darle las cadenas que aparecen en no válido, pero no en la válida.

Excluyendo el líder '>' se deja como ejercicio para el lector ;-).

Advertencia: Esto no funcionará si el archivo de entrada que contienen en realidad '>' en el inicio de una línea. Usted tendrá que hacer algunos engañar, a continuación,...

0voto

Aibara Iduas Puntos 3681

Tengo mi propia utilidad para que, que depende de la otra; también trabajan en sin clasificar de entrada. El uso básico es

except file1 file2 > file2-except-any-lines-in-file1

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: