GNU/Linux >> Tutoriales Linux >  >> Linux

extraer valores únicos entre 2 conjuntos/archivos

Usando algunas utilidades menos conocidas:

sort file1 > file1.sorted
sort file2 > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Esto generará duplicados, por lo que si hay 1 3 en file1 , pero 2 en file2 , esto seguirá generando 1 3 . Si esto no es lo que desea, canalice la salida desde sort hasta uniq antes de escribirlo en un archivo:

sort file1 | uniq > file1.sorted
sort file2 | uniq > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Hay muchas utilidades en el paquete GNU coreutils que permiten todo tipo de manipulaciones de texto.


$ awk 'FNR==NR {a[$0]++; next} !($0 in a)' file1 file2
6
7

Explicación de cómo funciona el código:

  • Si estamos trabajando en el archivo 1, realice un seguimiento de cada línea de texto que vemos.
  • Si estamos trabajando en el archivo 2 y no hemos visto el texto de la línea, imprímalo.

Explicación de detalles:

  • FNR es el número de registro del archivo actual
  • NR es el número de registro general actual de todos los archivos de entrada
  • FNR==NR es cierto solo cuando estamos leyendo el archivo1
  • $0 es la línea de texto actual
  • a[$0] es un hash con la clave establecida en la línea de texto actual
  • a[$0]++ rastrea que hemos visto la línea de texto actual
  • !($0 in a) es verdadero solo cuando no hemos visto el texto de la línea
  • Imprime la línea de texto si el patrón anterior devuelve verdadero, este es el comportamiento predeterminado de awk cuando no se da ninguna acción explícita

Linux
  1. extraer texto de archivos de MS word en python

  2. encontrar valores únicos en un archivo de datos

  3. Encuentra archivos creados entre un rango de fechas

  4. diferencia entre archivo de dispositivo y controlador de dispositivo

  5. Extraer archivos msi usando Linux

Instale Dropbox para compartir archivos entre Linux y Windows

Transferir archivos y carpetas entre computadoras con Croc

Sincronice archivos entre múltiples sistemas con Syncthing

Comparte archivos entre escritorios Linux con Warpinator

Transferir archivos entre cualquier dispositivo utilizando Piping Server

Compartir archivos entre Linux Mint y Windows 10