GNU/Linux >> Tutoriels Linux >  >> Linux

Liste des lignes d'un seul fichier dans DIFF

Pas sûr diff seul peut le faire, mais vous pouvez toujours utiliser la puissance d'autres utilitaires GNU pour vous aider.

diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'

Il fait le diff, puis sélectionne uniquement les lignes qui commencent par '-' - celles-ci sont modifiées et ont des valeurs du fichier diffa.txt, puis sed supprimez simplement ces signes "-".

Modifier : Après quelques expériences avec diff , il semble que la commande ci-dessous produise ce que vous voulez :

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

Une méthode plus simple consiste à utiliser comm utilitaire linux (il a besoin d'un fichier trié pour l'entrée). Il écrit sur la sortie standard :

  • lignes uniques pour diffa.txt

  • lignes uniques pour diffb.txt

  • lignes communes

et vous pouvez supprimer chacun d'eux par le paramètre 1,2 ou 3 en conséquence. Donc, dans votre cas, cela ressemblera à ceci :

comm -23 diffa.txt diffb.txt

Il supprime les lignes uniques pour diffb.txt, les lignes communes et imprime les lignes uniques uniquement pour diffa.txt

Source de : https://www.tutorialspoint.com/unix_commands/comm.htm


Je voudrais mentionner que comm attend des fichiers d'entrée triés et rapporte donc des résultats différents de diff .

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

est universel. Bravo à @vava


Linux
  1. Supprimer tous les fichiers/répertoires sauf un fichier ?

  2. Remplacer les lignes correspondant à un motif par des lignes d'un autre fichier dans l'ordre ?

  3. Copier les dernières N-lignes d'un fichier à un autre ?

  4. Comment ajouter plusieurs lignes à un fichier ?

  5. Awk de différentes lignes ?

Comment joindre plusieurs lignes en une seule dans un fichier sous Linux

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Lecture de lignes à partir d'un fichier avec Bash :pour Vs. Tandis que?

Supprimer les N premières lignes d'un fichier journal actif

extraire les lignes du bas jusqu'à ce que l'expression régulière corresponde

Comment afficher certaines lignes d'un fichier texte sous Linux ?