GNU/Linux >> Tutoriales Linux >  >> Linux

Comparando dos listas desordenadas en Linux, enumerando el único en el segundo archivo

Necesitas usar comm :

comm -13 first.txt second.txt

hará el trabajo.

PD. el orden del primer y segundo archivo en la línea de comandos es importante.

también es posible que deba ordenar los archivos antes:

comm -13 <(sort first.txt) <(sort second.txt)

en caso de que los archivos sean numéricos, agregue -n opción a sort .


Esto debería funcionar

comm -13 <(sort file1) <(sort file2)

Parece que sort -n (numérico) no puede funcionar con comm, que usa sort (alfanumérico) internamente

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 debe aparecer en la tercera columna

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

cat f1.txt f2.txt | sort |uniq > file3

grep -Fxv -f first-file.txt second-file.txt

Básicamente busca todas las líneas en second-file.txt que no coinciden con ninguna línea en first-file.txt . Puede ser lento si los archivos son grandes.

Además, una vez que ordene los archivos (use sort -n si son numéricos), entonces comm también debería haber funcionado. Que error da? Prueba esto:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Copiar archivos en la terminal de Linux

  2. ¿Cuál es el propósito del archivo .bashrc en Linux?

  3. ¿Archivo de ordenación de shell de Linux de acuerdo con la segunda columna?

  4. ¿Cómo usar el comando Ordenar de Linux para ordenar el archivo de texto de acuerdo con la cuarta columna, orden numérico?

  5. ¿Cómo veo du en GB en lugar de MB en Linux?

Introducción al sistema de archivos de Linux

Comando ls en Linux para listar archivos

Cómo limitar la profundidad de la lista recursiva de archivos en Linux

10 ejemplos útiles del comando Sort en Linux

Asegure Linux con el archivo Sudoers

Comparando dos archivos en la terminal de Linux