GNU/Linux >> Tutoriels Linux >  >> Linux

extraction de valeurs uniques entre 2 ensembles/fichiers

Utilisation d'utilitaires moins connus :

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

Cela produira des doublons, donc s'il y a 1 3 en file1 , mais 2 en file2 , cela affichera toujours 1 3 . Si ce n'est pas ce que vous voulez, dirigez la sortie de sort à uniq avant de l'écrire dans un fichier :

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

Il existe de nombreux utilitaires dans le package GNU coreutils qui permettent toutes sortes de manipulations de texte.


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

Explication du fonctionnement du code :

  • Si nous travaillons sur le fichier 1, suivez chaque ligne de texte que nous voyons.
  • Si nous travaillons sur le fichier 2 et que nous n'avons pas vu le texte de la ligne, imprimez-le.

Explication des détails :

  • FNR est le numéro d'enregistrement du fichier courant
  • NR est le numéro d'enregistrement global actuel de tous les fichiers d'entrée
  • FNR==NR est vrai uniquement lorsque nous lisons le fichier1
  • $0 est la ligne de texte actuelle
  • a[$0] est un hachage avec la clé définie sur la ligne de texte actuelle
  • a[$0]++ pistes que nous avons vu la ligne de texte actuelle
  • !($0 in a) est vrai uniquement lorsque nous n'avons pas vu le texte de la ligne
  • Imprime la ligne de texte si le modèle ci-dessus renvoie vrai, c'est le comportement par défaut d'awk lorsqu'aucune action explicite n'est donnée

Linux
  1. Imprimer deux fichiers sur deux colonnes ?

  2. Ssh – Copier des fichiers protégés entre serveurs sur une seule ligne ?

  3. Lignes communes entre deux fichiers ?

  4. Qu'est-ce qu'Awk '{print $1+0.45 " " $2 " " $3 }' File1> File2 ?

  5. extraire du texte de fichiers MS word en python

Installez Dropbox pour partager des fichiers entre Linux et Windows

Transférer des fichiers et des dossiers entre ordinateurs avec Croc

Synchroniser des fichiers entre plusieurs systèmes avec Syncthing

Partager des fichiers entre des postes de travail Linux avec Warpinator

Transférer des fichiers entre n'importe quel appareil à l'aide de Piping Server

Partage de fichiers entre Linux Mint et Windows 10